2011-10-26 7 views
4

C#の2番目の画像のように半透明の1x1チェックオーバーレイを追加するにはどうすればよいですか?画像にオーバーレイを導入するにはどうすればいいですか?

enter image description hereenter image description here

+0

依存します。たとえば、イメージをロードして改造し直したり、新しいイメージ全体を保存したり、UIのために何かをしたいとしますか?我々は本当により多くの情報が必要です。 –

+0

新しい画像を作成してAmazon S3にアップロードしたいと考えています。違いはなんですか? – Roman

+0

この[回答](http://stackoverflow.com/questions/4113900/c-sharp-add-watermark-to-the-photo-by-specialway/4114473#4114473)が役立つかもしれません - 2x2オーバーレイを使用テクスチャブラシ。 –

答えて

2

私はしばらく前に投稿した回答を修正し、コードでオーバーレイを作成することができました。オーバーレイ画像が作成された後、私はTextureBrushを使って元の画像の領域を塗りつぶします。以下のコードの設定では、次の画像が作成されました。あなたのニーズに合わせてサイズと色を変更することができます。

enter image description hereenter image description here

// set the light and dark overlay colors 
Color c1 = Color.FromArgb(80, Color.Silver); 
Color c2 = Color.FromArgb(80, Color.DarkGray); 

// set up the tile size - this will be 8x8 pixels, with each light/dark square being 4x4 pixels 
int length = 8; 
int halfLength = length/2; 

using (Bitmap overlay = new Bitmap(length, length, PixelFormat.Format32bppArgb)) 
{ 
    // draw the overlay - this will be a 2 x 2 grid of squares, 
    // alternating between colors c1 and c2 
    for (int x = 0; x < length; x++) 
    { 
     for (int y = 0; y < length; y++) 
     { 
      if ((x < halfLength && y < halfLength) || (x >= halfLength && y >= halfLength)) 
       overlay.SetPixel(x, y, c1); 
      else 
       overlay.SetPixel(x, y, c2); 
     } 
    } 

    // open the source image 
    using (Image image = Image.FromFile(@"C:\Users\Public\Pictures\Sample Pictures\homers_brain.jpg")) 
    using (Graphics graphics = Graphics.FromImage(image)) 
    { 
     // create a brush from the overlay image, draw over the source image and save to a new image 
     using (Brush overlayBrush = new TextureBrush(overlay)) 
     { 
      graphics.FillRectangle(overlayBrush, new Rectangle(new Point(0, 0), image.Size)); 
      image.Save(@"C:\Users\Public\Pictures\Sample Pictures\homers_brain_overlay.jpg"); 
     } 
    } 
} 
2

それから、グラフィックスオブジェクトを作成し、system.Drawing.Imageへのあなたの元の画像をロードします。描画するチェッカーパターンの2番目のイメージをロードし、作成したグラフィックスオブジェクトを使用して、元のイメージにチェッカーイメージを繰り返し描画します。

未テスト例

Image Original; 
    Image Overlay; 

    Original = new Bitmap(100, 100, System.Drawing.Imaging.PixelFormat.Format32bppArgb); //Load your real image here. 
    Overlay = new Bitmap(2, 2 ,System.Drawing.Imaging.PixelFormat.Format32bppArgb);//Load your 2x2 (or whatever size you want) overlay image here. 

    Graphics gr = Graphics.FromImage(Original); 
    for (int y = 0; y < Original.Height + Overlay.Height; y = y + Overlay.Height) 
    { 
     for (int x = 0; x < Original.Width + OverlayWidth; x = x + Overlay.Width) 
     { 
      gr.DrawImage(Overlay, x, y); 
     } 
    } 
    gr.Dispose(); 

コードが実行された後、オリジナルは今それに適用されるオーバーレイで元の画像を含むであろう。

+0

おかげで、私は前にこれを与えるつもりです。 – Roman

+0

書かれている方法では、左端と下端のいくつかのピクセルをカバーしないことがあります。オーバーレイサイズをループ境界に追加して修正します。私はまた、私の変数の1つを切り替えました。これも現在修正されています。 –

関連する問題