Wie unter Paint eine Fläche mit Muster füllen?

Spezielle Fragen zu 2D- und 3D-Grafik, Sound und Video
Antworten
gambasso
Foriker
Beiträge: 849
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Wie unter Paint eine Fläche mit Muster füllen?

Beitrag von gambasso » So 6. Sep 2015, 17:28

moin,

ich versuche schon eine ganze Zeit eine Fläche unter 'Paint' mit einem Füllmuster zu füllen.
Unter 'Draw' klappte es z.B. mit > Draw.FillStyle = F0_$FuelM <.
Unter 'Paint' habe ich es noch nicht geschafft. Wie sieht da der Befehl aus?
Gruss

tux_
Moderator
Beiträge: 946
Registriert: Di 11. Nov 2008, 20:05
Kontaktdaten:

Re: Wie unter Paint eine Fläche mit Muster füllen?

Beitrag von tux_ » So 6. Sep 2015, 18:28

Diese Frage habe ich 2013 schon auf der Mailingliste gestellt[0]. Anfang 2015 habe ich das Thema zusammen mit Honsek noch einmal aufgewaermt (gibt es einen Artikel im Gambas-Buch dazu?) und das sind deine Optionen:

  1. Benutze wie gewohnt die Draw-Klasse. Die Funktionalitaet der Draw-Klasse wird mittlerweile durch Paint-Aufrufe simuliert. Du kannst also in einem Paint-Block ohne weiteres die Draw-Klasse benutzen:
    gambas code
    Paint.Begin(DrawingArea1)
    Draw.FillStyle = ...
    Draw.Dieses()
    Paint.Jenes()
    Paint.End()
  2. Der Quelltext der Draw-Klasse befindet sich in der gb.gui.base-Komponente[1] (die in Gambas geschrieben ist). Dort siehst du, dass das Setzen von Draw.FillStyle dem Laden bestimmter kleiner Bildchen mittels
    gambas code
    Paint.Brush = Paint.Image(...)

    entspricht. Wenn du also jede Spur von Draw aus deinem Projekt entfernen willst, dann lade die Bilder[2] aus gb.gui.base herunter und implementiere dein eigenes FillStyle. Wie das geht, siehst du ja in der Draw-Klasse.

[0] http://sourceforge.net/p/gambas/mailman/message/31104402
[1] http://sourceforge.net/p/gambas/code/HEAD/tree/gambas/trunk/comp/src/gb.gui.base/.src/Draw.module
[2] http://sourceforge.net/p/gambas/code/HEAD/tree/gambas/trunk/comp/src/gb.gui.base/pattern/
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!

Honsek
Foriker
Beiträge: 343
Registriert: Do 4. Okt 2007, 17:01
Kontaktdaten:

Re: Wie unter Paint eine Fläche mit Muster füllen?

Beitrag von Honsek » So 6. Sep 2015, 19:22

Hallo,

ja, es gibt ein Kapitel dazu im Online-Gambas-Buch: http://www.gambas-buch.de/dw/doku.php?i ... .4.1:start und im Download-Bereich auch ein passendes Projekt.

Mit freundlichem Gruß

Honsek
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!

gambasso
Foriker
Beiträge: 849
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: Wie unter Paint eine Fläche mit Muster füllen?

Beitrag von gambasso » Mo 7. Sep 2015, 10:34

moin,

Du kannst also in einem Paint-Block ohne weiteres die Draw-Klasse benutzen:

Ok, ich muss aber jedesmal noch zusätzlich zu den Paint Befehlen ein 'Draw.Begin(...)' und ein 'Draw.End' eingeben. Sonst geht es bei mir nicht.
Das hatte ich nicht gemacht. Da nahm ich an, daß 'Paint' dies erledigte.

Bin jetzt schon mal ein Stück weiter.
Gruss

Honsek
Foriker
Beiträge: 343
Registriert: Do 4. Okt 2007, 17:01
Kontaktdaten:

Re: Wie unter Paint eine Fläche mit Muster füllen?

Beitrag von Honsek » Mo 7. Sep 2015, 19:13

gambasso hat geschrieben:Ok, ich muss aber jedesmal noch zusätzlich zu den Paint Befehlen ein 'Draw.Begin(...)' und ein 'Draw.End' eingeben. Sonst geht es bei mir nicht.

Guten Tag Gambasso,

wenn Du Dir die vielen Beispiele unter dem oben angegebenen Link anschaust, dann entdeckst Du m. E. kein Draw.Begin(...). Meine Empfehlung wäre, dass Du Dir das Projekt aus dem DownLoad-Bereich auf den heimischen PC lädst und die Beispiele erprobst.

Mit flotten Grüßen

Honsek
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!

tux_
Moderator
Beiträge: 946
Registriert: Di 11. Nov 2008, 20:05
Kontaktdaten:

Re: Wie unter Paint eine Fläche mit Muster füllen?

Beitrag von tux_ » Mo 7. Sep 2015, 19:40

Richtig, Draw.Begin() und Draw.End() setzen nur ein paar Default-Werte (AntiAlias = False, LineWidth = 1, LineCap = LineCapButt, LineJoin = LineJoinRound) in der Paint-Klasse, wie man dem Quelltext leicht entnehmen kann.
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste