C# と .NET Compact Framework を使用して Windows Mobile アプリケーションを開発しています。
ビットマップを小さい画像で塗りつぶしたい。この新しいビットマップを塗りつぶすには、ビットマップが完全に塗りつぶされるまで、画像を水平方向および垂直方向に繰り返します。
どうやってやるの?
ありがとうございました!
C# と .NET Compact Framework を使用して Windows Mobile アプリケーションを開発しています。
ビットマップを小さい画像で塗りつぶしたい。この新しいビットマップを塗りつぶすには、ビットマップが完全に塗りつぶされるまで、画像を水平方向および垂直方向に繰り返します。
どうやってやるの?
ありがとうございました!
ターゲットでGraphics.FromImageを使用して Graphics オブジェクトを取得し、その結果の Graphics オブジェクトで DrawImage メソッドを使用してタイルにペイントします。タイルのサイズと宛先ビットマップに基づいて、必要に応じて行と列ごとに繰り返します (つまり、x、y をタイルのサイズだけオフセットして繰り返します)。
これを試して:
for(int y = 0; y < outputBitmap.Height; y++) {
for(int x = 0; x < outputBitmap.Width; x++) {
int ix = x % inputBitmap.Width;
int iy = y % inputBitmap.Height;
outputBitmap.SetPixel(x, y, inputBitmap.GetPixel(ix, iy));
}
}
ATextureBrush
は、サーフェス全体でイメージを簡単に繰り返すことができます。これは、行/列にまたがって画像を手動で並べるよりもはるかに簡単です。
を作成し、TextureBrush
それを使用して長方形を塗りつぶすだけです。四角形を埋めるように画像を自動的に並べて表示します。
using (TextureBrush brush = new TextureBrush(yourImage, WrapMode.Tile))
{
using (Graphics g = Graphics.FromImage(destImage))
{
g.FillRectangle(brush, 0, 0, destImage.Width, destImage.Height);
}
}
上記のコードは同様の回答からのものです: https://stackoverflow.com/a/2675327/1145177