C# 为图片框提供图像的形状
本文关键字:图像 | 更新日期: 2023-09-27 18:34:31
我想给一个图片框一个我拥有的图像的形状。偏离路线的图像是矩形的,但应该忽略背景颜色,这导致了所需的形式。因此,如果有一张白色背景上的香蕉图片,我应该在最后有一个香蕉形状的图片盒。这是必需的,以便我可以在AxWMPLib媒体播放器前面移动形状的PictureBox,而不会让香蕉周围的矩形覆盖所有视频。
我的方法是创建一个扩展 PictureBox 的新类,然后将区域设置为形状。问题是,我不知道如何获得形状。
class ShapedPBox : PictureBox
{
public ShapedPBox()
{
this.Paint += this.shapedPaint;
}
void shapedPaint(object sender, paintEventArgs e)
{
System.Drawing.Drawing2D.GraphicsPath gP = new System.Drawing.Drawing2D.GraphicsPath();
//do something to give gP.addPicture? perhaps something with transparency key?
this.Region = new Region(graphicsPath);
}
public Image image;
}
您可以将
PictureBox
的SizeMode
属性设置为StretchImage
,这将删除默认的背景颜色。当然,图像会根据图像和控件大小缩小或增大。
如果您无法调整图像大小并且您知道背景的位置,则可以使用以下代码。它所做的只是从图像边缘获取颜色并将其设置为图片框的背景颜色。
Image image = Image.FromFile(@"c:'Image.png");
Bitmap bitmap = new Bitmap(image);
pictureBox1.BackColor = bitmap.GetPixel(0, 1);
pictureBox1.Image = image;