📄 textdemoview.cpp
字号:
// TextDemoView.cpp : CTextDemoView 类的实现
//
#include "stdafx.h"
#include "TextDemo.h"
#include "TextDemoDoc.h"
#include "TextDemoView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CTextDemoView
IMPLEMENT_DYNCREATE(CTextDemoView, CView)
BEGIN_MESSAGE_MAP(CTextDemoView, CView)
END_MESSAGE_MAP()
// CTextDemoView 构造/销毁
CTextDemoView::CTextDemoView()
{
// TODO: 在此处添加构造代码
}
CTextDemoView::~CTextDemoView()
{
}
BOOL CTextDemoView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或
// 样式
return CView::PreCreateWindow(cs);
}
// CTextDemoView 绘制
void CTextDemoView::OnDraw(CDC* pDC)
{
CTextDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: 在此处为本机数据添加绘制代码
using namespace Gdiplus;
Graphics myGraphics(pDC->m_hDC);
//在指定的位置绘制文本
/*WCHAR string[128];
wcscpy(string, L"在指定的位置绘制文本");
FontFamily fontFamily(L"宋体");
Font font(&fontFamily, 24, FontStyleRegular, UnitPixel);
PointF pointF(30.0f, 10.0f);
SolidBrush solidBrush(Color(255,0,0,255));
myGraphics.DrawString(string, (INT)wcslen(string), &font, pointF, &solidBrush);*/
//在矩形内绘制字符串
/*WCHAR string[128];
wcscpy(string, L"在矩形内绘制字符串");
FontFamily fontFamily(L"宋体");
Font font(&fontFamily, 24, FontStyleRegular, UnitPixel);
RectF rectF(30.0f, 10.0f, 100.0f, 122.0f);
SolidBrush solidBrush(Color(255,0,0,255));
myGraphics.DrawString(string,(INT)wcslen(string),&font, rectF, NULL, &solidBrush);
Pen pen(Color(255,0,0,0));
myGraphics.DrawRectangle(&pen, rectF);*/
//在矩形中居中布局文本块,每行文本都居中
/*WCHAR string[128];
wcscpy(string, L"在矩形中居中布局文本块,每行文本都居中");
FontFamily fontFamily (L"宋体");
Font font(&fontFamily, 12, FontStyleRegular, UnitPoint);
RectF rectF(30.0f, 10.0f, 120.0f, 140.0f);
SolidBrush solidBrush(Color(255,0,0,255));
StringFormat stringFormat;
// 指定每行文本居中布局
stringFormat.SetAlignment(StringAlignmentCenter);
// 指定文本块在矩形内居中布局
stringFormat.SetLineAlignment(StringAlignmentCenter);
myGraphics.DrawString(string, wcslen(string), &font, rectF, &stringFormat, &solidBrush);
Pen pen(Color(255,0,0,0));
myGraphics.DrawRectangle(&pen, rectF);*/
//设置制表位
/*WCHAR string[128] = L"姓名\t年龄\t性别\t势力\n";
wcscat(string, L"赵云\t35\t男\t蜀\n");
wcscat(string, L"马超\t22\t男\t西凉\n");
wcscat(string, L"夏侯渊\t32\t男\t魏\n");
wcscat(string, L"周瑜\t33\t男\t吴\n");
FontFamily fontFamily(L"幼圆");
Font font(
&fontFamily,
12,
FontStyleRegular,
UnitPoint);
RectF rectF(10.0f, 10.0f, 450.0f, 100.0f);
StringFormat stringFormat;
SolidBrush solidBrush(Color(255, 0, 0, 255));
REAL tabs[] = {150.0f, 100.0f, 100.0f, 100.0f};
stringFormat.SetTabStops(0.0f,3, tabs);
myGraphics.DrawString(string, wcslen(string) , &font, rectF, &stringFormat, &solidBrush);
Pen pen(Color(255,0,0,0));
myGraphics.DrawRectangle(&pen, rectF);*/
//绘制垂直文本
/*WCHAR string[] = L"绘制垂直文本";
FontFamily fontFamily(L"楷体_GB2312");
Font font(
&fontFamily,
24,
FontStyleRegular,
UnitPoint);
PointF pointF(40.0f, 10.0f);
SolidBrush solidBrush(Color(255, 0, 0, 255));
StringFormat stringFormat;
stringFormat.SetFormatFlags(StringFormatFlagsDirectionVertical);
myGraphics.DrawString(string, wcslen(string), &font, pointF, &stringFormat, &solidBrush);*/
//设定文本输出质量
FontFamily fontFamily(L"楷体_GB2312");
Font font(
&fontFamily,
32,
FontStyleRegular,
UnitPixel);
SolidBrush solidBrush(Color(255, 0, 0, 255));
WCHAR string1[] = L"普通文本";
WCHAR string2[] = L"优化文本";
WCHAR string3[] = L"抗锯齿文本";
WCHAR string4[] = L"优化抗锯齿文本";
//绘制普通文本
myGraphics.SetTextRenderingHint(TextRenderingHintSingleBitPerPixel);
myGraphics.DrawString(string1, wcslen(string1), &font, PointF(10, 10), &solidBrush);
//绘制优化文本
myGraphics.SetTextRenderingHint(TextRenderingHintSingleBitPerPixelGridFit);
myGraphics.DrawString(string2, wcslen(string2), &font, PointF(10, 50), &solidBrush);
//绘制抗锯齿文本
myGraphics.SetTextRenderingHint(TextRenderingHintAntiAlias);
myGraphics.DrawString(string3, wcslen(string3), &font, PointF(10, 90), &solidBrush);
//绘制优化抗锯齿文本
myGraphics.SetTextRenderingHint(TextRenderingHintAntiAliasGridFit);
myGraphics.DrawString(string4, wcslen(string4), &font, PointF(10, 130), &solidBrush);
}
// CTextDemoView 诊断
#ifdef _DEBUG
void CTextDemoView::AssertValid() const
{
CView::AssertValid();
}
void CTextDemoView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CTextDemoDoc* CTextDemoView::GetDocument() const // 非调试版本是内联的
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTextDemoDoc)));
return (CTextDemoDoc*)m_pDocument;
}
#endif //_DEBUG
// CTextDemoView 消息处理程序
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -