私は現在、黒い図形を持つpngを持つプロジェクト(c#WPF)に取り組んでいます。他はすべて透明です。BgrA32を使って作業する
私がしたいのは、黒いピクセルの色を変更するだけです。私はメソッドの入力として色を決定したいと思います。今はちょうどピクセルを変更するといいでしょう。たぶん私はループになると間違った考え方になっています(それはすべてがグリーン・アトムになります)。
私は、解決策を見つけるためにウェブを精査しようとしました。
私が行ったことは、書き込み可能なビットマップからピクセルを取り出すことです。 下記のコードを参照してください。あなたたちはそれを把握した場合
それはあなたが個別にすべてのバイトをループすることによって自分自身のために困難にそれを作っている私の一日:)
private void ChangeColor()
{
var projectPath = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName;
string filePath = System.IO.Path.Combine(projectPath, "Resources");
BitmapImage img = new BitmapImage(new Uri(filePath + @"\Vogn1.png", UriKind.Relative));
WriteableBitmap myBitmap = new WriteableBitmap(img);
int stride = myBitmap.PixelWidth * 4;
int size = myBitmap.PixelHeight * stride;
byte[] pixels = new byte[size];
myBitmap.CopyPixels(pixels, stride, 0);
int iDex = 0;
bool black = false;
for (int i = 0; i < pixels.Length; i++)
{
//if(pixels[i] == 255)
if (iDex == 1 || iDex == 3)
pixels[i] = 255;
else
pixels[i] = 0;
iDex++;
if (iDex == 4)
iDex = 0;
}
myBitmap.WritePixels(new Int32Rect(0, 0, myBitmap.PixelWidth, myBitmap.PixelHeight), pixels, stride, 0);
Wagon15.Source = myBitmap;
}
問題は何ですか。すでに各ピクセルの4バイトを正常に操作しています。しかし、あなたはこれを見てみたいです:http://stackoverflow.com/a/39189895/1136211 – Clemens
リンクをありがとう。多くのappriciated! :) –