Visualizzazione dei risultati da 1 a 8 su 8

Discussione: LineCap.ArrowAnchor

  1. #1

    LineCap.ArrowAnchor

    Col seguente codice riesco a disegnare una linea con i terminali a freccia.

    codice:
    Dim Pen01 As New Pen(Color.Black, 1) 
    Pen01.StartCap = Drawing2D.LineCap.ArrowAnchor 
    Pen01.EndCap = Drawing2D.LineCap.ArrowAnchor 
    g.DrawLine(Pen01, 20, 10, 200, 10)
    Essendo però settata la linea ad 1 pixel, i terminali vengono minuscoli.
    C'è un modo di ingrandirli lasciando lo spessore della penna ad 1 pixel??

    Grazie in anticipo

    Ciao

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Non hai indicato il linguaggio (né la versione, ove necessario) come espressamente richiesto dal Regolamento interno, né nel titolo, né all'interno della discussione.

    Inoltre, non hai postato il codice all'interno degli appositi tag CODE (come richiesto sempre dallo stesso regolamento).

    Il codice lo sistemo io, in attesa di sapere linguaggio e versione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Chiedo scusa, mi sono unito a Voi da poco. Era il 1° messaggio.

    Io utilizzo Visual basic 2008 Express.

    Grazie e ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Basta che usi la CustomLineCap:

    codice:
            Dim myPen As New Pen(Color.Black, 1)
            Dim myPoints() As Point = {New Point(5, -5), New Point(0, 0),New Point(-5, -5)}
            Dim myPath As New GraphicsPath()
            myPath.AddLines(myPoints)
            myPath.CloseFigure()
            Dim myLineCap As CustomLineCap = New CustomLineCap(myPath, Nothing)
            myLineCap.BaseInset = 0
            myLineCap.WidthScale = 1
            myLineCap.StrokeJoin = LineJoin.Miter
            myPen.CustomEndCap = myLineCap
            myPen.CustomStartCap = myLineCap
            e.Graphics.DrawLine(myPen, 50, 100, 200, 100)
    Sbagliare è umano, perseverare è diabolico.

  5. #5
    Ciao, come dicevo sono un principiante, e quindi evidentemente sto sbagliando qualcosa, perche quando uso il codice al messaggio prima, mi vengono segnalati tutta una serie di errori.

    Praticamente ho fatto così:
    1) Ho creato un form nuovo e vuoto
    2) Ho aggiungo un pulsante, che con l'evento Button1.Click fa partire il codice
    3) Ho messo all'interno il codice che mi avete fornito per disegnare la freccia

    Però mi vengono segnalati i seguenti errori:

    GraphicsPath(): NON DEFINITO
    CustomLineCap: NON DEFINITA
    LineJoin: NON DICHIARATA
    e.Graphics: NON E' UN MEMBRO di ....


    Non riesco a venirne fuori, grazie di nuovo

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Ciao, come dicevo sono un principiante, e quindi evidentemente sto sbagliando qualcosa..
    Lo vedo.

    ...perche quando uso il codice al messaggio prima, mi vengono segnalati tutta una serie di errori.
    Devi importare il namespace System.Drawing.Drawing2D, ovvero scrivere sopra la scritta 'Public Class Form1', ovvero:

    codice:
    Imports System.Drawing.Drawing2D
    
    Public Class Form1
    
        Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
            Dim myPen As New Pen(Color.Black, 1)
            Dim myPoints() As Point = {New Point(5, -5), New Point(0, 0), New Point(-5, -5)}
            Dim myPath As New GraphicsPath()
            myPath.AddLines(myPoints)
            myPath.CloseFigure()
            Dim myLineCap As CustomLineCap = New CustomLineCap(myPath, Nothing)
            myLineCap.BaseInset = 0
            myLineCap.WidthScale = 1
            myLineCap.StrokeJoin = LineJoin.Miter
            myPen.CustomEndCap = myLineCap
            myPen.CustomStartCap = myLineCap
            e.Graphics.DrawLine(myPen, 50, 100, 200, 100)
        End Sub
    End Class
    Se vuoi scrivere tale codice nell'evento da te citato devi fare qualche piccola modifica, ovvero:

    codice:
    Imports System.Drawing.Drawing2D
    
    Public Class Form1
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim g As Graphics = Me.CreateGraphics
            Dim myPen As New Pen(Color.Black, 1)
            Dim myPoints() As Point = {New Point(5, -5), New Point(0, 0), New Point(-5, -5)}
            Dim myPath As New GraphicsPath()
            myPath.AddLines(myPoints)
            myPath.CloseFigure()
            Dim myLineCap As CustomLineCap = New CustomLineCap(myPath, Nothing)
            myLineCap.BaseInset = 0
            myLineCap.WidthScale = 1
            myLineCap.StrokeJoin = LineJoin.Miter
            myPen.CustomEndCap = myLineCap
            myPen.CustomStartCap = myLineCap
            g.DrawLine(myPen, 50, 100, 200, 100)
        End Sub
    End Class
    Ti consiglio però, prima di tutto, di studiare le basi di VB.NET.
    Sbagliare è umano, perseverare è diabolico.

  7. #7
    Funziona tutto, grazie sei stato molto gentile.

    Sto imparando, faccio cose banali, però un po' questa storia della freccia mi tornava comodo prima di completare un iter di apprendimento più strutturato.
    Per curiosità quanto avevo richiesto a che livello di difficoltà si protrebbe inserire? nel senso è tra le cose facili o già di un programmatore di buona esperienza.


    PS: questa parte leggila solo se sei una persona dalla pazienza infinita.

    - Per modificare la dimensione dei terminali, dove devo intervenire?
    Sulle coordinate di quelli che sembrano essere i 3 punti che mi costituiscono la freccia
    [ Dim myPoints() As Point = {New Point(5, -5), New Point(0, 0), New Point(-5, -5)} ]
    o sulla riga
    [ myLineCap.WidthScale = 1]

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Per curiosità quanto avevo richiesto a che livello di difficoltà si protrebbe inserire? nel senso è tra le cose facili o già di un programmatore di buona esperienza.
    Livello principiante.



    - Per modificare la dimensione dei terminali, dove devo intervenire?
    Sulle coordinate di quelli che sembrano essere i 3 punti che mi costituiscono la freccia
    [ Dim myPoints() As Point = {New Point(5, -5), New Point(0, 0), New Point(-5, -5)} ]
    o sulla riga
    [ myLineCap.WidthScale = 1]
    Esatto quelli sono i tre punti del triangolo.
    Sbagliare è umano, perseverare è diabolico.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.