【WIN32】怎么绘制无边框的圆和圆角矩形?

大树学长 2018-07-03 04:19:47

在WIN32中绘制圆
HBRUSH hbrush = CreateSolidBrush(color);
SelectObject(Hdc, hbrush);
Ellipse(Hdc, x1, y1, x2, y2);
DeleteObject(hbrush);
绘制圆角矩形:
HBRUSH hbrush = CreateSolidBrush(color);
SelectObject(Hdc, hbrush);
RoundRect(Hdc, x1, y1, x2, y2, 5, 5);
DeleteObject(hbrush);
这样绘制有边线很丑
请问怎么去掉边线????
...全文
897 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
大树学长 2018-07-03
  • 打赏
  • 举报
回复
上面两种方法都试过了,不行
解决办法应该就两种:
1、使用GDI+然后加上抗锯齿
2、换成图片显示
大树学长 2018-07-03
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
SetStretchBltMode STRETCH_HALFTONE


引用 4 楼 zhao4zhong1 的回复:
或者干脆上GDI+


引用 5 楼 zgl7903 的回复:
要么试试把画笔和画刷的颜色设置的一样看看看, CreatePen(PS_SOLID, 1, 颜色)
要再有锯齿,那就可能要GDI+等抗锯齿处理了

SetStretchBltMode STRETCH_HALFTONE这个方法好,不过没有试过不知道行不行,GDI+可以解决问题,不过我换成插入图片了,还是不用代码画了
zgl7903 2018-07-03
  • 打赏
  • 举报
回复
要么试试把画笔和画刷的颜色设置的一样看看看, CreatePen(PS_SOLID, 1, 颜色)
要再有锯齿,那就可能要GDI+等抗锯齿处理了
赵4老师 2018-07-03
  • 打赏
  • 举报
回复
或者干脆上GDI+
赵4老师 2018-07-03
  • 打赏
  • 举报
回复
SetStretchBltMode STRETCH_HALFTONE
大树学长 2018-07-03
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
选人一个空画笔即可



HPEN hPen = CreatePen(PS_NULL, 1, 0);
HGDIOBJ hPenOld = SelectObject(Hdc, hPen);

{
COLORREF color = RGB(255, 0, 0);
int x1 = 10, y1 = 10, x2=110, y2=110;
HBRUSH hbrush = CreateSolidBrush(color);
HBRUSH hburshOld = (HBRUSH)SelectObject(Hdc, hbrush);
Ellipse(Hdc, x1, y1, x2, y2);
SelectObject(Hdc, hburshOld);
DeleteObject(hbrush);
}
//绘制圆角矩形:
{
COLORREF color = RGB(0, 200, 0);
int x1 = 120, y1 = 120, x2=210, y2=210;

HBRUSH hbrush = CreateSolidBrush(color);
HGDIOBJ hburshOld = SelectObject(Hdc, hbrush);
RoundRect(Hdc, x1, y1, x2, y2, 5, 5);
SelectObject(Hdc, hburshOld);
DeleteObject(hbrush);
}

SelectObject(Hdc, hPenOld);
DeleteObject(hPen);

666666
确实去掉边线了 不过有锯齿
zgl7903 2018-07-03
  • 打赏
  • 举报
回复
选人一个空画笔即可



HPEN hPen = CreatePen(PS_NULL, 1, 0);
HGDIOBJ hPenOld = SelectObject(Hdc, hPen);

{
COLORREF color = RGB(255, 0, 0);
int x1 = 10, y1 = 10, x2=110, y2=110;
HBRUSH hbrush = CreateSolidBrush(color);
HBRUSH hburshOld = (HBRUSH)SelectObject(Hdc, hbrush);
Ellipse(Hdc, x1, y1, x2, y2);
SelectObject(Hdc, hburshOld);
DeleteObject(hbrush);
}
//绘制圆角矩形:
{
COLORREF color = RGB(0, 200, 0);
int x1 = 120, y1 = 120, x2=210, y2=210;

HBRUSH hbrush = CreateSolidBrush(color);
HGDIOBJ hburshOld = SelectObject(Hdc, hbrush);
RoundRect(Hdc, x1, y1, x2, y2, 5, 5);
SelectObject(Hdc, hburshOld);
DeleteObject(hbrush);
}

SelectObject(Hdc, hPenOld);
DeleteObject(hPen);

19,469

社区成员

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

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