windowsAPI polyline问题

dinko321 2009-10-29 04:07:42
下面一段代码:

long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,long lParam)
{
int test=0;
HDC hDC;
HBRUSH hBrush;
HPEN hPen;
PAINTSTRUCT PtStr;
POINT P[3]={(50,50),(50,100),(100,50)};
switch(iMessage)
{
case WM_PAINT:
hDC=BeginPaint(hWnd,&PtStr);
SetMapMode(hDC,MM_TEXT);
hPen=(HPEN)GetStockObject(BLACK_PEN);
SelectObject(hDC,hPen);
hBrush=CreateHatchBrush(HS_FDIAGONAL,RGB(255,0,0));
SelectObject(hDC,hBrush);

MoveToEx(hDC,50,50,0);
Polyline(hDC,P,3);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
}



我的想法是,画一个以 (50,50),(50,100),(100,50)为顶点的三角形,但是执行polyline之后总得不到想要的形状


求指导
...全文
105 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangxiaohu_coder 2009-10-31
  • 打赏
  • 举报
回复
要四个点,第一个点和最后一个点值是一样的就可以了
feilinhe 2009-10-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dinko321 的回复:]
引用 3 楼 feilinhe 的回复:
引用 2 楼 fandh 的回复:
POINT P[4]={(50,50),(50,100),(100,50),(50,50)};

Polygon(hDC,P,4);
然后试试


这个是对的,
Polyline会把点排序的,得不到你想要的结果




不对,就算我用这个方法,出来的图型也并不是以 50,50 50,100 100,50为定点的三角形。。。。。
[/Quote]
没办法,那就直接使用MoveToEx,LineTo画
dinko321 2009-10-31
  • 打赏
  • 举报
回复
求指教阿求指教。。。。。。。。。。
coolcoffee4051982 2009-10-31
  • 打赏
  • 举报
回复
顶楼上的
wltg2001 2009-10-31
  • 打赏
  • 举报
回复
怎么又来了这个贴子,我记得上午回复了一个了,
主要原因是POINT P[4]={(50,50),(50,100),(100,50),(50,50)}; 的问题,不能这样初始化的,写成:
POINT P[4]={50,50,50,100,100,50,50,50}; 就行了,当然调用时写作Polygon(hDC,P,4);
飛雪一刀 2009-10-31
  • 打赏
  • 举报
回复
对,要用四个点,这个函数只是在两个点之间连一条线而已
dinko321 2009-10-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 feilinhe 的回复:]
引用 2 楼 fandh 的回复:
POINT P[4]={(50,50),(50,100),(100,50),(50,50)};

Polygon(hDC,P,4);
然后试试


这个是对的,
Polyline会把点排序的,得不到你想要的结果

[/Quote]




不对,就算我用这个方法,出来的图型也并不是以 50,50 50,100 100,50为定点的三角形。。。。。
feilinhe 2009-10-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fandh 的回复:]
POINT P[4]={(50,50),(50,100),(100,50),(50,50)};

Polygon(hDC,P,4);
然后试试

[/Quote]
这个是对的,
Polyline会把点排序的,得不到你想要的结果
fandh 2009-10-29
  • 打赏
  • 举报
回复
POINT P[4]={(50,50),(50,100),(100,50),(50,50)};

Polygon(hDC,P,4);
然后试试
阿呆_ 2009-10-29
  • 打赏
  • 举报
回复
如果你想画的是空心三角形:
...
POINT P[3]={(50,50),(50,100),(100,50),(50,50)};
...
Polyline(hDC,P,4);

如果你想画的是充填的三角形:
...
//Polyline(hDC,P,3);
Polygon(hDC,P,3);
...

19,468

社区成员

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

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