********* 如何用CPen画各点间空隙为1个像素的虚线? ***********

myb123 2004-11-25 04:53:46
CPen pen;
pen.CreatePen(PS_DOT,1,RGB(0,0,0));
我用上面的画笔画虚线, 其各点间的空隙都为3个像素.不知何解?
请问大侠,怎样才能画空隙为1个像素的虚线?
...全文
120 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ddszhan 2004-11-27
  • 打赏
  • 举报
回复
对CPen对象指定PS_USERSTYLE风格,自己设置画线风格。(但需要Win2000及以上操作系统)
handwolf 2004-11-25
  • 打赏
  • 举报
回复
void DotLine(CDC *pDC,int x1,int y1,int x2,int y2,COLORREF color)
{
int i,dx,dy,di,const1,const2,inc,tmp;
inc=2;
i=0;
dx=x2-x1;
dy=y2-y1;
if(fabs(dx)>fabs(dy))
{
if(dx<0)
{
tmp=x1;x1=x2;x2=tmp;
tmp=y1;y1=y2;y2=tmp;
dx=-dx;dy=-dy;
}
if(dy<0)
{
inc=-2;
dy=-dy;
}
di=2*dy-dx;
const1=2*(dy-dx);
const2=2*dy;
pDC->SetPixel(x1,y1,color);

while(x1<x2)
{
x1+=2;
if(di>=0)
{
y1+=inc;
di+=const1;
}
else
{
di+=const2;
}
pDC->SetPixel(x1,y1,color);
}
}
else
{
if(dy<0)
{
tmp=x1;x1=x2;x2=tmp;
tmp=y1;y1=y2;y2=tmp;
dx=-dx;dy=-dy;
}
if(dx<0)
{
inc=-2;
dx=-dx;
}
di=2*dx-dy;
const1=2*(dx-dy);
const2=2*dx;
pDC->SetPixel(x1,y1,color);

while(y1<y2)
{
y1+=2;
if(di>=0)
{
x1+=inc;
di+=const1;
}
else
{
di+=const2;
}
pDC->SetPixel(x1,y1,color);
}
}

}

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧