MFC 用Gdiplus画曲线和直线

一、效果

二、关键逻辑

	Gdiplus::Pen			m_pen;
	Gdiplus::Pen			m_penSolid;
	REAL dashVals[4] = {
		1, // 短划长为2
		3, // 间隔为2
		1, // 短划长为15
		3 }; // 间隔为2
	m_pen.SetDashPattern(dashVals, 4);

	m_penSolid.SetDashStyle(DashStyleDot);
	CPaintDC dc(this); // 用于绘制的设备上下文

	Gdiplus::Graphics graphics(dc.m_hDC);
	graphics.SetSmoothingMode(Gdiplus::SmoothingModeHighQuality);


	const int nPointX = 100;
	const int nPointY = 90;
	const int nWidth = 250;
	const int nHeight = 120;
	Rect rcTop(nPointX, nPointY, nWidth, nHeight);
	Rect rcBottom(nPointX, nPointY + 10, nWidth, nHeight);
	graphics.DrawArc(&m_pen, rcTop, 180, 180);
	graphics.DrawArc(&m_pen, rcBottom, 0, 180);

	const int nArrowWidth = 10;
	const int nArrowHeight = 7;

	Point ptDay(nPointX + nWidth / 2 + nArrowWidth / 2, rcTop.GetTop());
	Point ptDayX1(ptDay.X - nArrowWidth, ptDay.Y - nArrowHeight);
	Point ptDayX2(ptDay.X - nArrowWidth, ptDay.Y + nArrowHeight);
	graphics.DrawLine(&m_penSolid, ptDayX1, ptDay);
	graphics.DrawLine(&m_penSolid, ptDayX2, ptDay);

	Point ptNight(nPointX + nWidth / 2 + nArrowWidth / 2, rcBottom.GetBottom());
	Point ptNightX1(ptNight.X + nArrowWidth, ptNight.Y - nArrowHeight);
	Point ptNightX2(ptNight.X + nArrowWidth, ptNight.Y + nArrowHeight);
	graphics.DrawLine(&m_penSolid, ptNightX1, ptNight);
	graphics.DrawLine(&m_penSolid, ptNightX2, ptNight);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值