DrawText上下左右居中输出文字

在MFC的CView派生类中,使用OnDraw函数进行文字绘制时,详细步骤包括设置字体风格,设定背景色,设定文字颜色,并通过DrawText函数实现文字的上下左右居中显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CView OnDraw:设置字体,设置背景色,设置输出文字颜色,居中输出

	// TODO: add draw code for native data here
	CDocument* pDoc = GetDocument();
	
	CPaintDC* dc = (CPaintDC*)pDC;
	CRect rect;
	CBrush brush;
	brush.CreateSolidBrush(RGB(150,150,150));
	this->GetClientRect(&rect);
	dc->FillRect(&rect, &brush);
	brush.DeleteObject();

	CFont font;
	font.CreateFont(
		50, // nHeight
		0, // nWidth
		0, // nEscapement
		0, // nOrientation
		FW_NORMAL, // nWeight
		FALSE, // bItalic
		FALSE, // bUnderline
		0, // cStrikeOut
		ANSI_CHARSET, // nCharSet
		OUT_DEFAULT_PRECIS, // nOutPrecision
		CLIP_DEFAULT_PRECIS, // nClipPrecision
		DEFAULT_QUALITY, // nQuality
		DEFAULT_PITCH | FF_SWISS,
		_T("Arial") // nPitchAndFamily Arial
		); 
	pDC->SelectObject(&font);
	SetBkColor(pDC->m_hDC, RGB(150,150,150));
	//SetBkMode(pDC->m_hDC, TRANSPARENT);
	SetTextColor(pDC->m_hDC, RGB(255,0,0));

 	CString tout = &
#include <graphics.h> #include <conio.h> #include <stdio.h> #define BUTTON_TOP 100 void main() { initgraph(800,600); float H=220; float S=1; float L=0.7f; for (int y=0;y<600;y++) { L+=0.0005f; setlinecolor(HSLtoRGB(H,S,L)); line(0,y,799,y); } H=0; S=1; L=0.6f; setlinestyle(PS_SOLID,10); for (int r=400;r>344;r--) { H+=5; setlinecolor(HSLtoRGB(H,S,L)); circle(700,600,r); } settextcolor(WHITE);//设置当前文字颜色 setbkcolor(BLUE); outtextxy(10, 550, "Esc: exit");//指定位置输出字符串 settextcolor(WHITE);//设置当前文字颜色 setbkcolor(BLUE); outtextxy(10, 50, "班级:电子信息工程一班");//指定位置输出字符串settextcolor(WHITE);//设置当前文字颜色 setbkcolor(BLUE); outtextxy(10, 80, "姓名:林佳豪");//指定位置输出字符串 settextcolor(WHITE);//设置当前文字颜色 setbkcolor(BLUE); outtextxy(10, 110, "学号:2201020116");//指定位置输出字符串 RECT rStr1={300, BUTTON_TOP, 500,BUTTON_TOP+50}; char str1[]="HDMI 1"; char inputChar; setfillcolor(YELLOW);//设置当前的填充颜色 solidroundrect(300, BUTTON_TOP, 500,BUTTON_TOP+50,20,20);//画填充圆角矩形,前2个参数左顶点坐标,中间两个参数右下点的坐标,后2个参数为椭圆的宽高 settextcolor(WHITE);//设置当前文字颜色 setbkcolor(BLACK);//设置当前背景色 settextstyle(24, 0, "宋体");//设置字体大小 参数24为高度,参数0为宽度自适应 drawtext(str1, &rStr1, DT_CENTER | DT_VCENTER | DT_SINGLELINE);//在指定区域内以指定格式输出字符串,水平、垂直居中(单行有效) RECT rStr2={300, BUTTON_TOP+200, 500,BUTTON_TOP+50}; char str2[]="HDMI 2"; char inputChar2; setfillcolor(YELLOW);//设置当前的填充颜色 solidroundrect(300, BUTTON_TOP+100, 500,BUTTON_TOP+150,20,20);//画填充圆角矩形,前2个参数左顶点坐标,中间两个参数右下点的坐标,后2个参数为椭圆的宽高 settextcolor(WHITE);//设置当前文字颜色 setbkcolor(BLACK);//设置当前背景色 settextstyle(24, 0, "宋体");//设置字体大小 参数24为高度,参数0为宽度自适应 drawtext(str2, &rStr2, DT_CENTER | DT_VCENTER | DT_SINGLELINE);//在指定区域内以指定格式输出字符串,水平、垂直居中(单行有效) RECT rStr3={300, BUTTON_TOP+400, 500,BUTTON_TOP+50}; char str3[]="HDMI 3"; char inputChar3; setfillcolor(YELLOW);//设置当前的填充颜色 solidroundrect(300, BUTTON_TOP+200, 500,BUTTON_TOP+250,20,20);//画填充圆角矩形,前2个参数左顶点坐标,中间两个参数右下点的坐标,后2个参数为椭圆的宽高 settextcolor(WHITE);//设置当前文字颜色 setbkcolor(BLACK);//设置当前背景色 settextstyle(24, 0, "宋体");//设置字体大小 参数24为高度,参数0为宽度自适应 drawtext(str3, &rStr3, DT_CENTER | DT_VCENTER | DT_SINGLELINE);//在指定区域内以指定格式输出字符串,水平、垂直居中(单行有效) RECT rStr4={300, BUTTON_TOP+600, 500,BUTTON_TOP+50}; char str4[]="HDMI 4"; char inputChar4; setfillcolor(YELLOW);//设置当前的填充颜色 solidroundrect(300, BUTTON_TOP+300, 500,BUTTON_TOP+350,20,20);//画填充圆角矩形,前2个参数左顶点坐标,中间两个参数右下点的坐标,后2个参数为椭圆的宽高 settextcolor(WHITE);//设置当前文字颜色 setbkcolor(BLACK);//设置当前背景色 settextstyle(24, 0, "宋体");//设置字体大小 参数24为高度,参数0为宽度自适应 drawtext(str4, &rStr4, DT_CENTER | DT_VCENTER | DT_SINGLELINE);//在指定区域内以指定格式输出字符串,水平、垂直居中(单行有效) while((inputChar=getch())!=27)//当输入不是Esc键时,一直执行while循环 { switch(inputChar) { case 72: printf("input up\n"); break; case 80: printf("input down\n"); break; case 75: printf("input left\n"); break; case 77: printf("input right\n"); break; case 13: printf("input Enter\n"); break; } } closegraph(); // 关闭图形界面 }怎么让上下键控制选项HDMI 1到HDMI 4 和esc退出程序
03-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值