2010-08-02 11 views
8

मैं निम्नलिखित कोड, कि एक (बहुत) छोटे तीर से एक रेखा खींचता है ...कैसे करें: तीर के साथ एक रेखा खींचे?

private void Form1_Paint(object sender, PaintEventArgs e) 
    { 
     Pen p = new Pen(Color.Black); 
     p.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor; 

     e.Graphics.DrawLine(p, 10, 10, 100, 100); 
     p.Dispose(); 
    } 

है मैं एक बड़ा तीर (वृत्त, वर्ग, त्रिकोण आदि आकर्षित करने के लिए चाहते हैं ...), समान लाइन चौड़ाई रखते हुए।

क्या यह संभव है?

उत्तर

13

आप GraphicsPath के साथ CustomLineCap का उपयोग करना चाहते हैं। यहाँ एक उदाहरण है:

using(Pen p = new Pen(Color.Black)) 
using(GraphicsPath capPath = new GraphicsPath()) 
{ 
    // A triangle 
    capPath.AddLine(-20, 0, 20, 0); 
    capPath.AddLine(-20, 0, 0, 20); 
    capPath.AddLine(0, 20, 20, 0); 

    p.CustomEndCap = new System.Drawing.Drawing2D.CustomLineCap(null, capPath); 

    e.Graphics.DrawLine(p, 0, 50, 100, 50); 
} 

आपको एक पंक्ति शीर्ष से नीचे जा रहा है और से (0, 0) सही निर्देशांक पाने के लिए के साथ अपने टोपी "डिजाइन" करना चाहते हैं।

संपादित: मैं सिर्फ इतना है कि आप भी AdjustableArrowCap उपयोग कर सकते हैं एक विशिष्ट आकार के एक तीर आकर्षित और इसे भरने का उल्लेख करना चाहता था लेकिन क्योंकि आप अन्य आकृतियों के लिए आवश्यकता का उल्लेख किया है, मैं एक CustomLineCap का उपयोग किया है।

+0

हाँ .. मुझे कस्टम कैप के बारे में पता है ... असुविधाजनक यह है कि यह लाइन चौड़ाई के साथ नहीं बदलेगा ... आदर्श रूप से मेरे लिए कैप "कैपस्केल" या "कैपसाइज" जैसी संपत्ति थी ... लेकिन यह अस्तित्व में नहीं है ... यह भी एक दयालुता है जो 'एडजस्टेबल सर्कल कैप' या 'एडजस्टेबल स्क्वायर कैप' मौजूद नहीं है ... – serhio

+1

@ सेरहियो - क्या मतलब है कि यह लाइन चौड़ाई के साथ नहीं बदलेगा? यदि आप पेन चौड़ाई बदलते हैं, तो यह एक मोटी रेखा खींच लेगा। क्या आप और क्या समझ सकते हैं? आप अपने * अपने * 'समायोज्यक्रिकल कैप 'को भी रोल कर सकते हैं, जब आप जानते हैं कि' ग्राफिक्सपाथ 'का सही तरीके से उपयोग कैसे किया जाए तो यह मुश्किल नहीं है। यदि आप निश्चित नहीं हैं, तो मैं आपके लिए एक लिख सकता हूं। 'समायोज्यआरोक्रोप 'के लिए – TheCloudlessSky

+3

+1 – SOUser

संबंधित मुद्दे