x = arround 5000、y = arround 13の値を持つMatrix [y] [x]を持っています。 そして私はそれらをイメージ上の異なる色(値によって異なる)にマークする必要があります。C# - イメージのピクセルのマーキング
問題:画像がマトリックスよりもはるかに大きいです。 1つの値のiカラー1ピクセルの場合、Xの1/3しか得られず、yの1/20のように塗りつぶされます。しかし、私は持っている価値の量で全体のイメージをペイントする必要があります。私が試した
ソリューション:各値 問題で一度に複数のピクセルをマーキング:私は同時にXとYをスケーリングすることはできません - 私のために複雑に>道:私は考えることができます/
ソリューション:スケーリング画像をマトリックスの正確なサイズに合わせてから、ピクセル(1ピクセル= 1の値)をペイントし、その後、描画されたイメージのサイズを表示サイズに変更します。
私がここで助けてくれたら嬉しいです。多分あなたはこの問題のためのより良い解決策を持っています。私は考えることができるよりも...注:私はC#でnewbyです。
私の現在の試み:(行列の各値に5つのピクセルをマーキング)事前に
Bitmap image1;
image1 = new Bitmap(@"C:\Users\Downloads\test.bmp", true);
Bitmap newImage = new Bitmap(image1.Width, image1.Height);
using (Graphics graphics = Graphics.FromImage(newImage))
{
graphics.DrawImage(image1, 0, 0);
}
Color pixelColor = newImage.GetPixel(0, 0); //set pixel color to white
int x, y; //loop for matrix
double akt_Wert = 0;
int x1=0, y1=0; //loop for picture
for (x = 0; x < max_Col; x++) /
{
for (y = max_Rows - 1; y >= 0; y--)
{
try
{
akt_Wert = Convert.ToDouble(rows[y][x]); //tries to convert the current Value to double, if it fails its NaN -> catch
if (akt_Wert < 0.7) //if < threshold
{
for (x1 = x * 5; x1 < x*5+5; x1++)
{
Color newColor = Color.FromArgb(pixelColor.R, 50, 50);
newImage.SetPixel(x1, y1, newColor);
}
}
if (akt_Wert >= 0.7) //if >= threshold
{
for (x1 = x * 5; x1 < x*5+5; x1++)
{
Color newColor = Color.FromArgb(pixelColor.B, 10, 0);
newImage.SetPixel(x, y, newColor);
}
}
}
catch //value is NaN
{
//MessageBox.Show("Spalte = NaN");
}
}
pictureBox1.Image = newImage; // Set the PictureBox to display the image.
System.Threading.Thread.Sleep(5); //needed to avoid error
}
}
ありがとう! よろしくお願いいたします。 キリスト教
_Iは、同時にXとYをスケールすることができません - >私のために複雑になる方法??????ハァッ??あなたがxをスケールすることができれば、yと同じことをする別のものは何ですか? FillRectanlgeのSizeFと座標を決定するために、浮動小数点数を使って作業するだけです。 – TaW