Linie mit eigenem Pattern

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
E-P-S
Beiträge: 134
Registriert: 30.03.2007 09:39
Kontaktdaten:

Linie mit eigenem Pattern

Beitrag von E-P-S »

Hallo zusammen,

wenn ich Danilos GDI+ Lib (hier) verwende und eine Datei als Pattern (Textur) nehme wird dieses gekachelt und erscheint immer in gleicher Ausrichtung.
Bild

Ist es möglich eine Linie mit einem eigenen Pattern auch so zu zeichnen das die Ausrichtung des Patterns dem Linienverlauf folgt?
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: Linie mit eigenem Pattern

Beitrag von Danilo »

E-P-S hat geschrieben:Ist es möglich eine Linie mit einem eigenen Pattern auch so zu zeichnen das die Ausrichtung des Patterns dem Linienverlauf folgt?
Das geht so normal nicht, da es einfach ein Muster (Pattern) ist, das wiederholt gezeichnet wird (tiled).

Du kannst probieren es selbst zu machen. In Deinem Beispielbild sind 4 Linien zu sehen.
Für jede Linie kannst Du den Winkel ausrechnen und den Pen mit gSetPenRotation entsprechend
drehen. Danach nächste Linie mit neuem Winkel zeichnen.
Allerdings werden die Übergänge von den Linien wohl nicht so gut aussehen.

Test:

Code: Alles auswählen

XIncludeFile "gDrawing.pbi"

Global penImage.i

Procedure Draw()
    gDrawingMode( #PB_2DDrawing_Outlined )
    
    gSetPenSize(10)
    gSetPenImage(penImage)
    ;gSetPenCaps(#PenCapRound,#PenCapRound)
    
    gSetPenRotation(-45) : gSetPenOrigin(100,100)
    
    gLineXY(100,100,200,200)

    gResetPenTransform()
    gSetPenRotation(-90) ;: gSetPenOrigin(200,200)
    
    gLineXY(200,200,300,200)

    gResetPenTransform()
    gSetPenRotation(-135) ;: gSetPenOrigin(300,200)
    
    gLineXY(300,200,400,100)


EndProcedure

penImage = CreateImage(#PB_Any,20,20)
If StartDrawing( ImageOutput(penImage) )
    DrawingMode(#PB_2DDrawing_Gradient)

    BackColor($00FFFF)
    FrontColor($FF0000)
    LinearGradient(0, 0, 0, 20)

    Box(0,0,20,20)

    StopDrawing()
EndIf

If gInit()
    mainWin = OpenWindow(#PB_Any,0,0,800,600,"gDrawing feature demo",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
    img = CreateImage(#PB_Any,800,600,24)
    If gStartDrawing( ImageOutput(img) )
        gClear( RGBA($AA,$AA,$AA,$FF) )
        Draw()
        gStopDrawing()
    EndIf
    imgWin  = ImageGadget(#PB_Any,0,0,800,600,ImageID(img))
    Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
    gEnd()
EndIf
Sieht mMn nicht gut aus.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
E-P-S
Beiträge: 134
Registriert: 30.03.2007 09:39
Kontaktdaten:

Re: Linie mit eigenem Pattern

Beitrag von E-P-S »

So toll muß es gar nicht aussehen - ist für meine Zwecke also die perfekte Lösung.

Besten dank.
Antworten