MFC画带箭头的直线

构造一个函数,是在startPoint,endPoint间画一条带箭头的线段:
void CTry1View::DrawLine(POINT startPoint, POINT endPoint)
{
CClientDC dc(this);
dc.MoveTo(startPoint);
dc.LineTo(endPoint);

double PI = 3.1415926;
double t=PI/4; //箭头与直线夹角
double l=0.2; //箭头边长度占直线长度的百分比

POINT arrowPoint;

arrowPoint.x = (int)(l*((startPoint.x-endPoint.x)*cos(t)-(startPoint.y-endPoint.y)*sin(t))+endPoint.x);
arrowPoint.y = (int)(l*((startPoint.x-endPoint.x)*sin(t)+(startPoint.y-endPoint.y)*cos(t))+endPoint.y);
dc.MoveTo(endPoint);
dc.LineTo(arrowPoint);

arrowPoint.x = (int)(l*((startPoint.x-endPoint.x)*cos(-t)-(startPoint.y-endPoint.y)*sin(-t))+endPoint.x);
arrowPoint.y = (int)(l*((startPoint.x-endPoint.x)*sin(-t)+(startPoint.y-endPoint.y)*cos(-t))+endPoint.y);
dc.MoveTo(endPoint);
dc.LineTo(arrowPoint);
}

 画用例图的继承关系的带三角箭头的实线:

#include "stdafx.h"
#include "LineArrow.h"


CLineArrow::CLineArrow(void)
{
}


CLineArrow::~CLineArrow(void)
{
}


void CLineArrow::DrawDashedLineArrow(CDC* pDC)
{
CPen pen;
pen.CreatePen(PS_DASH,1,RGB(0,0,0));//笔刷类型,像素宽,笔刷颜色

}


void CLineArrow::DrawInheritLine(CDC* pDC)
{
double PI = 3.1415926;
double t = PI / 4;
double l = 0.2;

CPoint arrowlftPoint;
arrowlftPoint.x = (int)(l*((m_start.x-m_end.x)*cos(t)-(m_start.y-m_end.y)*sin(t))+m_end.x);
arrowlftPoint.y = (int)(l*((m_start.x-m_end.x)*sin(t)+(m_start.y-m_end.y)*cos(t))+m_end.y);

CPoint arrowRtPoint;
arrowRtPoint.x = (int)(l*((m_start.x-m_end.x)*cos(-t)-(m_start.y-m_end.y)*sin(-t))+m_end.x);
arrowRtPoint.y = (int)(l*((m_start.x-m_end.x)*sin(-t)+(m_start.y-m_end.y)*cos(-t))+m_end.y);

CPoint end;
end.x = (arrowlftPoint.x + arrowRtPoint.x) / 2;
end.y = (arrowlftPoint.y + arrowRtPoint.y) / 2;

pDC->MoveTo(m_start);
pDC->LineTo(end);

pDC->MoveTo(m_end);
pDC->LineTo(arrowlftPoint);


pDC->MoveTo(m_end);
pDC->LineTo(arrowRtPoint);

pDC->MoveTo(arrowlftPoint);
pDC->LineTo(arrowRtPoint);
}

 mfc 画线===============http://www.2cto.com/kf/201408/324222.html=============

 字体:http://blog.sina.com.cn/s/blog_6111ce890100rqse.html

BOOL   CreateFont(    

                int   nHeight,                       //字体的高度

                int   nWidth,                         //字体的宽度

                int   nEscapement,               //字体显示的角度

                int   nOrientation,             //字体的角度

                int   nWeight,                       //字体的磅数

                BYTE   bItalic,                     //斜体字体

                BYTE   bUnderline,               //带下划线的字体

                BYTE   cStrikeOut,               //带删除线的字体

                BYTE   nCharSet,                   //所需的字符集

                BYTE   nOutPrecision,         //输出的精度

                BYTE   nClipPrecision,       //裁减的精度

                BYTE   nQuality,                   //逻辑字体与输出设备的实际

                                                                                  //字体之间的精度

               BYTE   nPitchAndFamily,     //字体间距和字体集

               LPCTSTR   lpszFacename       //字体名称

                         );  

 

转载于:https://www.cnblogs.com/Decmber/p/4951871.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值