Tag: alpha

将图像加载到MenuItem上会使预乘的alpha图像失去透明度

我真的需要一些帮助。 我正在尝试将一个我认为32bpp的图像加载到MenuItem上的预乘alpha( 我按照本指南在GIMP中制作图像 )。 我知道ContextMenuStrip类,不想使用它。 以下是我用于将图像设置到MenuItem上的代码: // apis [DllImport(“user32.dll”, SetLastError = true)] static extern bool SetMenuItemInfo(IntPtr hMenu, uint uItem, bool fByPosition, [In] ref MENUITEMINFO lpmii); [DllImport(“user32.dll”, SetLastError = true, CharSet = CharSet.Auto)] static extern IntPtr LoadImage(IntPtr hinst, string lpszName, uint uType, int cxDesired, int cyDesired, uint fuLoad); // structures [StructLayout(LayoutKind.Sequential)] struct MENUITEMINFO { public uint […]

覆盖两个或多个位图以在Picturebox中显示(C#)

在我的C#程序中,我有一个Picturebox,我想在其中显示video流(连续帧)。 我收到原始数据,然后我转换为Bitmap或Image。 我可以一次显示一个图像而没有问题(重现video流)。 现在我的问题是我想合并两个或更多具有相同大小和alpha值(ARGB)的位图(如图层)并在图片框上显示它 。 我在SO上阅读了很多网站和post,但很多人使用的是Graphics类,我只是无法在我的应用程序上绘制它(很可能是因为我是C#的新手!并且已经安装了我的程序,所以我不想改变结构)。 我需要(知道): 如何使用alpha值覆盖两个或多个位图; 请不要像素操纵,不能承受性能成本。 非常感谢你提前! 注意:我认为这个问题不应该被标记(或关闭)为重复,因为我在SO中找到的所有内容都是通过像素操作或通过Graphics类完成的。 (但我可能错了!) 编辑:可能的解决方法(不是问题的解决方案 ) 在PictureBox问题中 ,第4个答案(来自用户来自)告诉我有2个picturebox,一个在另一个之上。 我必须做的唯一(额外)事情是使它与这种方法一起工作: private void Form1_Load(object sender, EventArgs e) { pictureBox2.Parent = pictureBox1; } 哪个pictureBox2将是顶部的那个。 我不会认为这是这个问题的答案,因为我认为这是一种解决方法(特别是因为有超过10个图片盒似乎不太理想!哈哈)。 这就是为什么我会打开这个问题等待我的问题的真正答案。 编辑:已解决! 检查我的答案。

在C#中使用Alpha通道显示PNG

有没有办法在C#应用程序中正确显示带alpha通道的图像(比方说PNG)? 谢谢你的任何建议。 更新: 好的,我的问题有点不高兴。 我想获得alpha通道的真实透明度 – 不填充父母的背景颜色。 在下图中,我们可以看到支持透明度,但是图像下方的按钮部分是不可见的。 是否可以实现图像alpha通道的真实透明度? 图像呈现不完全透明度http://img684.imageshack.us/img684/8804/transpt.jpg

如何将透明PNG加载到位图并忽略Alpha通道

我看到很多关于如何加载带有alpha通道的PNG并显示它的问题,但没有关于如何加载具有alpha通道但忽略alpha通道的PNG,揭示底层RGB数据。 我试过简单地删除alpha通道中的所有数据,但我只是得到黑色像素而不是我想要的颜色数据。 从我创建Bitmap对象的那一刻起,它似乎不包含alpha为0的像素中的任何颜色信息,尽管我向你保证PNG中的信息实际存在。 要清楚,如果我的图像包含具有这些值的像素:(R:255 G:128 B:128 A:0)我需要该像素(R:255 G:128 B:128 A:255),而不是(R:0 G:0 B:0 A:255)。 谢谢 编辑:以前的信息不正确。 位图包含使用时的所有信息: Bitmap myImage = Bitmap(“filename.png”) ; 我做错了是后来使用: Bitmap otherImage = Bitmap(myImage); 似乎这就是我需要的数据无效。 相反,我现在正在使用 Bitmap otherImage = (Bitmap)(myImage.Clone()); 然后使用lockbits手动将alpha通道设置为不透明。 我希望这对未来的某些人有用。

在c#System.Drawing中使用Alpha掩码?

我正在尝试使用System.Drawing.Graphics对象绘制带有源Bitmap和alpha蒙版Bitmap的图像。 目前我循环X和Y并使用GetPixel和SetPixel将源颜色和掩码alpha写入第三个Bitmap ,然后渲染它。 然而,这是非常低效的,我想知道是否有更快的方法来实现这一目标? 我之后的效果看起来像这样: 网格图案代表透明度; 你可能知道这一点。

Windows窗体的透明度表示文本框

我在C#中使用Windows窗体,我需要使文本框的背景颜色透明。 我有一个从0到255的轨道栏应该控制它,但我遇到了一些麻烦。 我今天早些时候提出了一个问题问同样的问题,但没有成功。 这是我目前的代码: private void trackAlpha_ValueChanged(object sender, EventArgs e) { newColor = Color.FromArgb(trackAlpha.Value, colorDialog.Color.R, colorDialog.Color.G, colorDialog.Color.B); colorDialog.Color = newColor; // The Windows dialog used to pick the colors colorPreview.BackColor = newColor; // Textbox that I’m setting the background color } 问题是绝对没有任何反应。 关于为什么这不起作用的任何想法? 在上一个问题上,这个好人讲了一些关于SetStyle(ControlStyles.SupportsTransparentBackColor, true); ,但我不知道我应该把它放在哪里。