Seite 2 von 4

Verfasst: 06.01.2009 23:03
von AND51
Oh, dann habe ich es falsch verstanden.
Ich dachte sein Problem sei, dass er nicht wüsste, wie die Zeichenfläche in ein extra Fenster kommt.

Die Toolbar aus ausziehbares Fensterchen zu bekommen geht vielleicht mit API oder einer der diversen Toolbar-Libs. Eine gewisse "ToolbarPro"-Lib gibt's oder gab's mal, wenn ich mich recht erinnere.
Ansonsten mal den Andreas (heißt unser Forenmitglied so?) fragen, ob er weiterweiß, denn sein Untertitel (links unter dem Nickname) heißt "Toolbar-König". Vielleicht weiß er rat.

Verfasst: 06.01.2009 23:47
von c4s
@hDC
könntest es z.B. so benutzen:

Code: Alles auswählen

hDC = StartDrawing(ImageOutput(#Image))
LineEx(hDC, ...)

Verfasst: 07.01.2009 17:43
von Dare Devil
Also ich arbeite gerade an neue Features, wie z.B. das Zeichnen von dicken Linien (hiermit einen herzlichen Dank an c4s - deine Prozedur funktioniert einwandfrei).
Genannte Bugs wurden inzwischen auch behoben.

Mit dem Release warte ich aber noch - ich moechte noch eine Farbpalette einbauen, da mir die Loesung mit dem ColorRequester als etwas zu umstaendlich erscheint :) daher werd ich auch ne kleine Farbpalette (wie in Paint) einbauen.

Veilleicht schaff ich es ja doch noch, dass mein Programm ein besseres MS Paint wird...

Verfasst: 07.01.2009 23:36
von Dare Devil
Und da isses... das Update...

- Farbpalette eingebaut - Mit der linken Maustaste waehlt man die 1. Farbe und mit der rechten Maustaste die 2. Farbe
- Dicke Linien zeichnen jetzt moeglich
-Bugs gefixed


Link gibts im ersten Post des Threads

Verfasst: 07.01.2009 23:57
von X360 Andy
Super gemacht :allright:

Hab nur einen kleinen (eigentlich unbedeutenden) Bug gefunden
- Wenn man das ZeichenFenster sehr weit rauszieht , und dann wieder zurück zieht, werden die Blauen Punkte mehrmals angezeigt ...
Wenn das nur bei mir so ist , kann ich auch einen screen machen

Verfasst: 08.01.2009 00:24
von Dare Devil
X360 Andy hat geschrieben:Super gemacht :allright:

Hab nur einen kleinen (eigentlich unbedeutenden) Bug gefunden
- Wenn man das ZeichenFenster sehr weit rauszieht , und dann wieder zurück zieht, werden die Blauen Punkte mehrmals angezeigt ...
Wenn das nur bei mir so ist , kann ich auch einen screen machen
Nein, das ist bei mir auch so.
Der Bug war mir bekannt - hab allerdings noch keine Loesung dafuer gefunden.
Sobald das Bild zu gross ist und in das Fenster nicht mehr reinpasst wird ein ScrollBalken erstellt und danach refresht PB irgendwie nicht mehr den Fensterinhalt bis die Maustaste nicht losgelassen wurde. Komischer Bug - denn solange kein Scrollbalken erstellt werden muss, funktioniert alles wunderbar.
Ich werde jedenfalls noch daran arbeiten und den Bug beheben.

Danke fuers Feedback :)

Verfasst: 18.01.2009 02:07
von Xaby
Super Arbeit, dafür, dass du erst seit kurzem dabei bist.

optional:

* Pinsel-Punkte werden durch Linien verbunden, damit schnelle Mausbewegungen
nicht nur viele Punkte, sondern schöne Striche erzeugen

* ausgefüllte Kreise, ausgefüllte Rechtecke

* Pinsel-Form: Kreis, schräge Linien, Muster ...

> Lupenfunktion scheint noch etwas glitschig zu sein. Die mal überarbeiten
> Raster beim Zoomen zur besseren Koordinierung anzeigen.


>>> falsche Darstellung von Satzzeichen bei hoher ZeichenDPI-Zahl.
Eventuell das hier einbauen:
http://www.purebasic.fr/german/viewtopi ... i&start=10

Für dein erstes Programm absolut top: :allright: :allright: :allright:

Weitere Inspiration:
http://www.purebasic.fr/german/viewtopi ... ght=pixtix
http://www.purebasic.fr/german/viewtopi ... ght=pixtix

Weiter so!!!

Verfasst: 18.01.2009 02:41
von Dare Devil
Xaby hat geschrieben:Super Arbeit, dafür, dass du erst seit kurzem dabei bist.
Danke - wobei es leider nich so gut geworden ist, wie ich es mir erhofft hatte :(

Xaby hat geschrieben:* Pinsel-Punkte werden durch Linien verbunden, damit schnelle Mausbewegungen
nicht nur viele Punkte, sondern schöne Striche erzeugen
Das ist eines der vielen Probleme die ich nicht gebacken bekomme. Das Problem dabei ist, dass genau dort der Punkt gemacht wird wo sich die Maus befindet.

Xaby hat geschrieben:* ausgefüllte Kreise, ausgefüllte Rechtecke
Bereits implementiert - laesst sich sogar in 3 verschiedenen Arten einstellen auf Menu -> Tools -> Extended Tool Options

Xaby hat geschrieben:* Pinsel-Form: Kreis, schräge Linien, Muster ...
hm? Die Form laesst sich ja frei waehlen - muss sich nur im Clipboard als Image befinden...

Xaby hat geschrieben:> Lupenfunktion scheint noch etwas glitschig zu sein. Die mal überarbeiten
> Raster beim Zoomen zur besseren Koordinierung anzeigen.
Inwiefern denn? Problem ist halt nur, dass das Programm langsamer wird, aber von der Funktion selbst her seh ich bisher noch nix schlechtes.

Xaby hat geschrieben:>>> falsche Darstellung von Satzzeichen bei hoher ZeichenDPI-Zahl.
Eventuell das hier einbauen:
http://www.purebasic.fr/german/viewtopi ... i&start=10
Danke, seh ich mir noch naeher an ... ist zu frueh am morgen ;)
Xaby hat geschrieben:Für dein erstes Programm absolut top: :allright: :allright: :allright:

Weitere Inspiration:
http://www.purebasic.fr/german/viewtopi ... ght=pixtix
http://www.purebasic.fr/german/viewtopi ... ght=pixtix

Weiter so!!!
:shock: Und das alles in PB? Wahnsinn...

Verfasst: 18.01.2009 03:41
von c4s
Dare Devil hat geschrieben:
Xaby hat geschrieben:* Pinsel-Punkte werden durch Linien verbunden, damit schnelle Mausbewegungen
nicht nur viele Punkte, sondern schöne Striche erzeugen
Das ist eines der vielen Probleme die ich nicht gebacken bekomme. Das Problem dabei ist, dass genau dort der Punkt gemacht wird wo sich die Maus befindet.
Ist doch ganz einfach.
Anstatt die Punkte zu malen merkst du dir einfach die letzten Koordinaten
und malst dementsprechend von eben diesen zu den Aktuellen eine Linie.
Irgendwie so:

Code: Alles auswählen

Repeat
	MouseX = DesktopMouseX()
	MouseY = DesktopMouseY()

	LineXY(MouseXLast, MouseYLast, MouseX, MouseY, $123456)

	MouseXLast = MouseX
	MouseYLast = MouseY
ForEver
Wobei beim ersten Malen MouseXLast = MouseX sein müsste...

Verfasst: 18.01.2009 12:42
von Xaby
Clipboard
Dein Programm sollte wirklich nur auf die Zwischenablage zugreifen,
oder diese benutzen, wenn der Nutzer es ausdrücklich verlangt.

Eine Möglichkeit wäre zum Beispiel, eine Art kleines Malfeld von
eventuell 32 x 32 Pixeln, wo man mit einem kleinen Stift drauf zeichnen
kann und das auch nur in schwarz oder weiß oder in Graustufen und
das wird dann quasi der neue Pinsel.

Wenn du dein System umstellst und einen Screen benutzt,
kannst du sogar Sprites nehmen und diese als Malpinsel benutzen.
Und du könntest sogar ne Transparenzstärke einstellen.

>>>>>>>>>>>>>>>>>>>>>>>>>>>

Kannste jetzt nur umständlich indem du erst die vorhandenen Pixel
analysierst und dann entsprechend mit den Pixeln, die noch drauf sollen
prozentual als Farbwert verrechnest und dann wieder setzt, das ist
langsam.

Beispiel.

Pinpette liefert Rot: 100, grün: 200, blau: 50

Du willst jetzt darauf einen halbtransparenten grünen Klecks machen:

Farbe: R: 0, G: 255, B: 0

>>>>>>>>>>>>>>>>>>>>>>

Der Klecks, soll halbtransparent und du möchtest 2 Bilder mit einander
verrechnen. Jedes Bild muss also die Farbinformationen ins neue
resultierende Bild zur Hälfte einbringen:

Rot : 100 / 2 + 0 / 2, grün: 200 / 2 + 255 / 2, blau: 50 / 2 + 0 / 2

Wenn dein neuer Klecks 75 % Deckkraft hat, ist der Anteil 3 Mal höher
als der Anteil von dem Bild, welches darunter liegt.

also 1/4 + 3/4 = 1 Ganzes.

Du kannst es auch für jede Prozentzahl machen:

ErsterFarbwert / 100 * (100-Deckung) + ZweiterFarbwert / 100 * Deckung
Bei unserem Beispiel mit 75% Deckkraft des zweiten Farbwerts wäre es also

R: 100 / 100 * 25 + 0 / 100 * 75 = 25
G: 200 / 100 * 25 + 255 / 100 * 75 ~ 241
B: 50 / 100 * 25 + 0 / 100 * 75 ~ 13

Das müsste natürlich in einer verschachtelten Schleife für jeden
Pixel gemacht werden. Also erst ein Point (), dann ein Plot() :D

:allright: