2010-04-20 5 views
12

में छवि दोहराएं मेरे पास एक निश्चित पैटर्न के साथ एक छवि है। जीडीआई का उपयोग करके मैं इसे दूसरी छवि में कैसे दोहरा सकता हूं? क्या जीडीआई में ऐसा करने का कोई तरीका है?सी #

+0

किस प्रकार का पैटर्न? क्या आप पिक्सेल कॉपी करना चाहते हैं? –

उत्तर

22

सी # में, आप एक TextureBrush कि हूँ बना सकते हैं जहां भी आप इसका उपयोग करते हैं, अपनी छवि को टाइल करें, और उसके बाद एक क्षेत्र भरें। कुछ इस तरह (एक उदाहरण है कि पूरे छवि भरता है) ...

// Use `using` blocks for GDI objects you create, so they'll be released 
// quickly when you're done with them. 
using (TextureBrush brush = new TextureBrush(yourImage, WrapMode.Tile)) 
using (Graphics g = Graphics.FromImage(destImage)) 
{ 
    // Do your painting in here 
    g.FillRectangle(brush, 0, 0, destImage.Width, destImage.Height); 
} 

ध्यान दें, आप कैसे छवि टाइलों है पर कुछ नियंत्रण चाहते हैं तो आपको रूपांतरण के बारे में थोड़ा जानने की जरूरत जा रहे हैं।

मैं लगभग भूल गया (वास्तव में मैं थोड़ा के लिए भूल गए): आप से ऊपर है के रूप में काम करने के लिए कोड के लिए क्रम में System.Drawing और System.Drawing.Drawing2D (WrapMode के लिए) (Graphics और TextureBrush के लिए) आयात करने की आवश्यकता होगी।

0

एक "पैटर्न" (यह बार-बार पेंटिंग) के रूप में एक विशेष छवि पेंट करने के लिए कोई समारोह नहीं है, लेकिन यह करने के लिए बहुत सरल होना चाहिए:

public static void FillPattern(Graphics g, Image image, Rectangle rect) 
{ 
    Rectangle imageRect; 
    Rectangle drawRect; 

    for (int x = rect.X; x < rect.Right; x += image.Width) 
    { 
     for (int y = rect.Y; y < rect.Bottom; y += image.Height) 
     { 
      drawRect = new Rectangle(x, y, Math.Min(image.Width, rect.Right - x), 
          Math.Min(image.Height, rect.Bottom - y)); 
      imageRect = new Rectangle(0, 0, drawRect.Width, drawRect.Height); 

      g.DrawImage(image, drawRect, imageRect, GraphicsUnit.Pixel); 
     } 
    } 
} 
+0

@ सैम: आप इसे अपने 'ग्राफिक्स' ऑब्जेक्ट पर आयताकार पास करते हैं जिसे आप छवि से भरना चाहते हैं। –