Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从项目资源加载位图_C#_Wpf_Bitmap - Fatal编程技术网

C# 从项目资源加载位图

C# 从项目资源加载位图,c#,wpf,bitmap,C#,Wpf,Bitmap,我想更改图像的一些像素。映像生成操作设置为“资源”。我无法获取位图对象,因此可以使用下面的for循环进行更改 Bitmap bmp = new Bitmap("pack://application:,,,/ovl_kommen.png"); //Change Black pixels to color for (int x = 0; x < bmp.Width; x++) { for (int y

我想更改图像的一些像素。映像生成操作设置为“资源”。我无法获取位图对象,因此可以使用下面的for循环进行更改

        Bitmap bmp = new Bitmap("pack://application:,,,/ovl_kommen.png");


        //Change Black pixels to color
        for (int x = 0; x < bmp.Width; x++)
        {
            for (int y = 0; y < bmp.Height; y++)
            {
                if (bmp.GetPixel(x,y) == System.Drawing.Color.Black)
                {
                    bmp.SetPixel(x, y, System.Drawing.Color.Blue);
                }
            }
        }
Bitmap bmp=新位图(“pack://application:,,,/ovl_kommen.png);
//将黑色像素更改为彩色
对于(int x=0;x
我的下一个问题是,向用户查看修改后的位图。我有一个WPF图像控件img_kommen,我想将位图设置为源。
img_kommen.Source=bmp

与其操纵像素值,不如使用填充的
矩形
并将图标图像应用为,因为

此属性仅使用所提供笔刷的alpha通道值。笔刷渲染内容的其他通道(红色、绿色或蓝色)将被忽略

例如:

<Rectangle x:Name="icon" Fill="Black" Width="100" Height="100">
    <Rectangle.OpacityMask>
        <ImageBrush ImageSource="ovl_kommen.png" Stretch="Uniform"/>
    </Rectangle.OpacityMask>
</Rectangle>

System.Drawing.Bitmap是WinForms,而不是WPF。您通常不会在WPF应用程序中使用它。WPF的等价物是什么?它是BitmapImage。还有WriteableBitmap,它允许修改像素缓冲区。是否有关于如何设置/获取位图的像素颜色的指南/示例?WPF提供了更好的方法来实现这一点。例如,您可以使用路径而不是图像控件,并具有图标形状的几何图形。或者将图像放入一个ImageBrush中,该画笔用作一个具有适当填充(即黑色或红色)的矩形的不透明遮罩。这太棒了!谢谢你的帮助!
icon.Fill = Brushes.Red;