.net - WPF-मैं एक ब्रश कैसे बना सकता हूं जो ग्राफ़-पेपर-समान वर्गों को पेंट करता है?




grid brush (3)

आप ऐसा कर सकते हैं XAML में एक VisualBrush का उपयोग कर। आपको एक प्रारंभिक बिंदु देने के लिए एक नमूना के रूप में, यहां एक ब्लॉग पोस्ट है जो एक ब्रश को तैयार करने के लिए विज़ुअलब्रश का उपयोग करता है। यह एक ग्रिड के करीब है - और इन्हें कन्वर्ट करने में काफी आसान होगा।

मैं एक ब्रश कैसे बना सकता हूं जो 1-यूनिट मोटी लाइनों के एक नियमित, दोहराया ग्रिड को क्षैतिज और ऊर्ध्वाधर दोनों अक्षरों में समान रूप से अलग करता है? ग्राफ पेपर की कल्पना करो, यदि आप करेंगे।

आदर्श रूप से समाधान लाइनों और पृष्ठभूमि (वर्गों के भीतर के क्षेत्रों) के लिए इस्तेमाल ब्रश पर नियंत्रण की अनुमति देगा। इस तरह से पृष्ठभूमि पारदर्शी हो सकती है, ताकि ग्रिड ओवरले के रूप में काम कर सके।

संपादित करें यहां एक ऐसी छवि है जो टॉम के उत्तर का परिणाम दिखाती है:

इस उदाहरण के लिए एक ग्रिड का उपयोग तीनों परतों को मिश्रित करने के लिए किया गया था यह दिखाने के लिए कि ग्रिड वास्तव में पारदर्शी है


आरेखण ब्रश का उपयोग करें आरेखण में आकार, चित्र, पाठ, और मीडिया हो सकते हैं।

निम्नलिखित उदाहरण एक आरेखण का उपयोग करता है ताकि एक आयताकार भरें।

Rectangle exampleRectangle = new Rectangle();
exampleRectangle.Width = 75;
exampleRectangle.Height = 75;

// Create a DrawingBrush and use it to
// paint the rectangle.
DrawingBrush myBrush = new DrawingBrush();

GeometryDrawing backgroundSquare =
    new GeometryDrawing(
        Brushes.White,
        null,
        new RectangleGeometry(new Rect(0, 0, 100, 100)));

GeometryGroup aGeometryGroup = new GeometryGroup();
aGeometryGroup.Children.Add(new RectangleGeometry(new Rect(0, 0, 50, 50)));
aGeometryGroup.Children.Add(new RectangleGeometry(new Rect(50, 50, 50, 50)));

LinearGradientBrush checkerBrush = new LinearGradientBrush();
checkerBrush.GradientStops.Add(new GradientStop(Colors.Black, 0.0));
checkerBrush.GradientStops.Add(new GradientStop(Colors.Gray, 1.0));

GeometryDrawing checkers = new GeometryDrawing(checkerBrush, null, aGeometryGroup);

DrawingGroup checkersDrawingGroup = new DrawingGroup();
checkersDrawingGroup.Children.Add(backgroundSquare);
checkersDrawingGroup.Children.Add(checkers);

myBrush.Drawing = checkersDrawingGroup;
myBrush.Viewport = new Rect(0, 0, 0.25, 0.25);
myBrush.TileMode = TileMode.Tile;

exampleRectangle.Fill = myBrush;

स्रोत: एमएसडीएन: WPF ब्रश अवलोकन


मैंने एक 16x16 बिटमैप का प्रयोग बाएं और निचले किनारों वाले काले रंग के साथ किया था। तब मेरी खिड़की में, मैं पृष्ठभूमि का उपयोग करने के लिए सेट, टाइलों। यहां XAML है (दिखाए जाने के लिए थोड़ा बदल दिया गया)।

<Window.Background>
  <ImageBrush ImageSource="/GraphPaper;component/Background.bmp"
              Stretch="None" TileMode="Tile"
              Viewport="0,0,16,16" ViewportUnits="Absolute" />
</Window.Background>






brush