c# winform 可以画出不规则图形的pictureBox么

limon758 2008-09-06 12:51:25
矩形的一拖就可以了

但是我如果想要一个三角形或者圆形的pb

可以实现吗

以下几个形状,可以画出来吗,我要在画好的形状上显示图片

△ ◎ ◇ ○ ☆ ∧

这种形状能画么`?
...全文
1605 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
chxg99 2009-12-30
  • 打赏
  • 举报
回复
mark
hhc123 2009-12-29
  • 打赏
  • 举报
回复
很容易啊
优途科技 2008-09-11
  • 打赏
  • 举报
回复
以下几个形状,可以画出来吗,我要在画好的形状上显示图片

△ ◎ ◇ ○ ☆ ∧

这种形状能画么`?
-------------------------------------------


直接画肯定比较困难,单单一个☆可能就要写上上百行的代码。所以你可以变通一下,如果你需要的不是矢量的图形,你可以将画好的△ ◎ ◇ ○ ☆ ∧ 存成icon或者其他格式的文件,然后当需要绘制的时候,直接绘制icon
Graphics temp_g;
temp_g.DrawIcon(PointIcon, new Rectangle(pt.X - 4, pt.Y - 4, poiStyle.Size, new Size(4,4));

如果是需要矢量图,恐怕就的自己设计绘图类了。比较麻烦,不过很锻炼人。
zhujiechang 2008-09-07
  • 打赏
  • 举报
回复
region
kyle315 2008-09-07
  • 打赏
  • 举报
回复
把画图的内容封装成一个快而已,有画三角形的块,有画五角星的块。
windboyzsj 2008-09-07
  • 打赏
  • 举报
回复
可以的设置他的Region,例如做个椭圆的PB


public Form1()
{
InitializeComponent();
//pictureBox1在设计界面添加
System.Drawing.Drawing2D.GraphicsPath shape = new System.Drawing.Drawing2D.GraphicsPath();
shape.AddEllipse(0, 0, pictureBox1.Width, pictureBox1.Height);
pictureBox1.Region = new System.Drawing.Region(shape);
}
liang4571231 2008-09-07
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 yatobiaf 的回复:]
我写过不规则窗口的程序,三角形的窗口,还有抓取图片上一种颜色的区域组成的窗口.我想,pb应该也差不多把,
/
C# code// <summary>
/// 根据背景图像设置窗体的不规则形状
/// </summary>
/// <param name="bitmap">背景图像</param>
/// <param name="transColor">指定颜色为透明的</param>
/// <returns></returns>
protected Region SetMainFormRegionFormBitmap(Bitm…
[/Quote]
顶顶吧!
yatobiaf 2008-09-07
  • 打赏
  • 举报
回复
我写过不规则窗口的程序,三角形的窗口,还有抓取图片上一种颜色的区域组成的窗口.我想,pb应该也差不多把,
/
// <summary>
/// 根据背景图像设置窗体的不规则形状
/// </summary>
/// <param name="bitmap">背景图像</param>
/// <param name="transColor">指定颜色为透明的</param>
/// <returns></returns>
protected Region SetMainFormRegionFormBitmap(Bitmap bitmap, Color transColor)
{
GraphicsPath FormPath = new GraphicsPath();
try
{
for (int y = 0; y < this.Height; y++)
{
for (int x = 0; x < this.Width; x++)
{
if (bitmap.GetPixel(x, y) == transColor)
continue;
int x0 = x;
while ((x < this.Width) && (bitmap.GetPixel(x, y) != transColor))
x++;


FormPath.AddRectangle(new Rectangle(x0, y, x - x0, 1));
}
}

}
catch
{

}
Region regi = new Region(FormPath);
FormPath.Dispose();
return regi;
}
//在构造函数里调用即可
this.Region = this.SetMainFormRegionFormBitmap((Bitmap)BackgroundImage, Color.FromArgb(0, 0, 255));
chNeed1 2008-09-07
  • 打赏
  • 举报
回复
楼上说的没错,就是用区域来表示,其实只要问一个懂C++就清楚,这是很简单办到的事情。。
把你想要的形状的所有矩形用region累加起来,再设置进控件的窗口区域。 好像。NET已经提供了一个根据图片设定的区域来算绘制的区域的,就是
假设有张三角形的图片,前景是红色,背景是白色,只要告诉系统透明色是白色就可以算出红色三角形的区域了。
limon758 2008-09-06
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 r_swordsman 的回复:]
当然可以啦..任何形状的都可以...用过PHOTOSHOP吧?? 就跟PHOTOSHOP的遮罩一样..
[/Quote]

是要求切出来的,而不是盖住的
因为这些图形要紧凑的拼凑在一起
各种不同的形状拼凑起来,然后分别在上边显示出图片

不知道可否重写pb

能让pb改变个角度么``?
格拉 2008-09-06
  • 打赏
  • 举报
回复
帮顶
r_swordsman 2008-09-06
  • 打赏
  • 举报
回复
当然可以啦..任何形状的都可以...用过PHOTOSHOP吧?? 就跟PHOTOSHOP的遮罩一样..
baihe_591 2008-09-06
  • 打赏
  • 举报
回复
路过...
kissxiongjin 2008-09-06
  • 打赏
  • 举报
回复
也顶一个吧
net0003 2008-09-06
  • 打赏
  • 举报
回复
顶一个吧
wenbin 2008-09-06
  • 打赏
  • 举报
回复
我就看下自己的可用分等级。。
changjiangzhibin 2008-09-06
  • 打赏
  • 举报
回复
自己DIY
viki117 2008-09-06
  • 打赏
  • 举报
回复
以前貌似看到。。忘记了。。也是在c#这里。。你搜索下吧
LQknife 2008-09-06
  • 打赏
  • 举报
回复
顶顶更健康
yagebu1983 2008-09-06
  • 打赏
  • 举报
回复
没研究过!!
你去cnblogs看看!!
加载更多回复(3)

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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