में छवि दोहराएं मेरे पास एक निश्चित पैटर्न के साथ एक छवि है। जीडीआई का उपयोग करके मैं इसे दूसरी छवि में कैसे दोहरा सकता हूं? क्या जीडीआई में ऐसा करने का कोई तरीका है?सी #
सी #
उत्तर
सी # में, आप एक 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
के लिए) आयात करने की आवश्यकता होगी।
एक "पैटर्न" (यह बार-बार पेंटिंग) के रूप में एक विशेष छवि पेंट करने के लिए कोई समारोह नहीं है, लेकिन यह करने के लिए बहुत सरल होना चाहिए:
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);
}
}
}
@ सैम: आप इसे अपने 'ग्राफिक्स' ऑब्जेक्ट पर आयताकार पास करते हैं जिसे आप छवि से भरना चाहते हैं। –
किस प्रकार का पैटर्न? क्या आप पिक्सेल कॉपी करना चाहते हैं? –