MFC中怎么实现画笔的宽度和线形? 我知道MFC中用CPen可以改笔的宽度和线形,再调用库里的图形函数可以。但我是用SetPixel函数自己重新实现的直线,圆,椭圆函数。用CPen改了宽度和线形后,再调用我自己定义的图形函数,线宽什么的还是没变啊。该怎么做,才可以在调用自己的图形函数情况下改线宽和线形。 本人新手 ,求指教。MFC图形 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 void CPaintTabView::Line(){ CDC *pDC; pDC=GetDC(); CPen pen(PS_SOLID,10, m_clr); CPen *OldPen=pDC->SelectObject(&pen); int x1 = m_bOrigin.x,y1 = m_bOrigin.y,x2 = m_bFinish.x,y2 = m_bFinish.y,c =m_clr; int i,s1,s2,interchange; float x,y,deltax,deltay,f,temp; x=x1; y=y1; deltax=abs(x2-x1); deltay=abs(y2-y1); if (x2-x1>=0) s1=1;else s1=-1; if (y2-y1>=0) s2=1;else s2=-1; if (deltay>deltax) { temp = deltax; deltax = deltay; deltay = temp; interchange = 1; } else interchange = 0; f = 2*deltay-deltax; pDC->SetPixel(x,y,c); for(i=1;i<=deltax;i++) { if (f>=0) { if (interchange==1) x+=s1; else y+=s2; pDC->SetPixel(x,y,c); f=f-2*deltax+2*deltay; } else { if (interchange==1) y+=s2; else x+=s1; pDC->SetPixel(x,y,c); f=f+2*deltay; } } ReleaseDC(pDC); } 光见你设置SetPixel,没见你画啊 LineTo() 而且函数结束也没有将老画笔选回DC http://msdn.microsoft.com/zh-tw/library/021s1051(v=VS.100).aspxhttp://msdn.microsoft.com/zh-cn/aa294006http://msdn.microsoft.com/zh-tw/library/kchtckce(v=VS.80).aspx SetPixel与笔宽没有关系,它不使用画笔,不信你不使用画笔试试。它是操作像素的,一个像素你听说过有多宽吗?这种叫做栅格操作。 当然了,还是要lineto最方便。lineto也是可以画一个点的(你需要的这种点)。 VC2008编译转换为“AFX_PMSG”的问题 请教一个高端问题 基于完成端口做服务器的一点困惑 vc操作excel,workbooks.open函数出错,在线等 各位,有难题,在对话框中插入什么控件,可以在上面输入一个小数,然后赋给一个变量 谁给介绍几本VC++的好书啊? 提问:使用htmlview的问题,高手请进来!! moveto lineto不能画边框吗 请问在VC中如何不用控件进行网络编程 vc6.0 activex 控件怎么放入网页中 SOS求助大神啊~listctrl显示的问题 求编码方式,懂各种编码方式进
{
CDC *pDC;
pDC=GetDC();
CPen pen(PS_SOLID,10, m_clr);
CPen *OldPen=pDC->SelectObject(&pen);
int x1 = m_bOrigin.x,y1 = m_bOrigin.y,x2 = m_bFinish.x,y2 = m_bFinish.y,c =m_clr;
int i,s1,s2,interchange;
float x,y,deltax,deltay,f,temp;
x=x1;
y=y1;
deltax=abs(x2-x1);
deltay=abs(y2-y1);
if (x2-x1>=0) s1=1;else s1=-1;
if (y2-y1>=0) s2=1;else s2=-1;
if (deltay>deltax)
{
temp = deltax;
deltax = deltay;
deltay = temp;
interchange = 1;
}
else interchange = 0;
f = 2*deltay-deltax;
pDC->SetPixel(x,y,c);
for(i=1;i<=deltax;i++)
{
if (f>=0)
{
if (interchange==1) x+=s1;
else y+=s2;
pDC->SetPixel(x,y,c);
f=f-2*deltax+2*deltay;
}
else
{
if (interchange==1) y+=s2;
else x+=s1;
pDC->SetPixel(x,y,c);
f=f+2*deltay;
}
}
ReleaseDC(pDC);
}
而且函数结束也没有将老画笔选回DC
http://msdn.microsoft.com/zh-tw/library/kchtckce(v=VS.80).aspx
它是操作像素的,一个像素你听说过有多宽吗?
这种叫做栅格操作。