Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Benjis kleines Zeichenprogramm (https://www.delphipraxis.net/175584-benjis-kleines-zeichenprogramm.html)

benji316 2. Jul 2013 14:41


Benjis kleines Zeichenprogramm
 
Liste der Anhänge anzeigen (Anzahl: 2)
Mein kleines Zeichenprogramm, ähnlich wie Paint, und es beherrscht auch die meisten Funktionen von Paint.
Enstanden ist es als Übungsprojekt für meine Informatik-Matura, für die ich mich mit einfachen 2D-Grafiken in Delphi beschäftigt habe, und dann kam irgendwann mal die Idee, einfach mal ein simples Zeichenprogramm wie Paint zu erstellen, und mit der Zeit wurde es immer umfangreicher (inzwischen besteht es aus 502 Zeilen Code, mein größtes Projekt bis jetzt :))

Features (Auswahl):
Mit gedrückter Mastaste zeichnen, Stiftfarbe und Breite verändern, Rechtecke und Polygone aufziehen, Bilder als Bitmap speichern und öffnen, usw.



Bugs bitte melden!

Die aktuelle Version des Programms und den Sourcecode kann man separat von meinem Mediafire-Ordner downloaden (im Anhang befindet sich nur der Quellcode):
http://www.mediafire.com/folder/gsyh...eichenprogramm

Crossposts in anderen Foren:
http://www.entwickler-ecke.de/viewto...er=asc&start=0
http://forum.delphi-treff.de/index.p...58947&e94e96ae

sx2008 2. Jul 2013 15:22

AW: Benji´s kleines Zeichenprogramm
 
Zwei Dinge:
* gib den ganzen Units, Formularen und Komponenten mal vernünftige Namen. Unit1,Unit2,...Unit7 - das geht ja mal gar nicht.
* Rücke den Sourcecode sauber ein und verwende diese Einrückung durchgängig überall.
Die VCL verwendet 2 Leerzeichen pro Einrücktiefe.

Der schöne Günther 2. Jul 2013 15:24

AW: Benji´s kleines Zeichenprogramm
 
Ich habe auf die Schnelle vorhin versucht, es über diesen komischen Host herunterzuladen, bin aber gescheitert. Jetzt immerhin mit Bild, Danke dafür :-)

Kannst du es nicht auch hier als Anhang hochladen?

MrMooed 2. Jul 2013 15:59

AW: Benji´s kleines Zeichenprogramm
 
Hey,

cooles Programm :thumb:

Was mir so spontan an Fehlverhalten aufgefallen ist:
  • Zeichnest du eine Linie, oder möchtest sonst etwas gestalten, scheint er nicht am Mauszeigers anzufangen, sondern etwa 10px unterhalb der Spitze :?:
  • Minimert man das Fenster, ist der Versatz zwischen Mauszeiger und gezeichneter Linie noch größer (Edit: der Abstand ist zufällig genauso groß, wie dein TMainMenu hoch ist + der Abstand von deiner Form zum oberen Bildschirmrand)
  • Minimiert man aus "versehen" das Fenster, hat man keine Chance es wieder zu Maximieren
  • Verschiebt man das Fenster (bzw. lässt es von einem anderen Fenster überdecken) "verschwindet" das gezeichnete (nur bei minimiertem Fenster)

Was du noch verbessern/ einbringen könntest:
  • verschiedene Auflösungen. Öffnest du z.B. ein Icon (256x256) und möchtest es überarbeitet wieder abspeichern, nimmt er die Höhe und Breite deiner Form :wink:
  • es ist "unschön" sich durch das TMainMenu durchzuwursteln, bis man die Option gefunden hat. Gerade dazu predestiniert finde ich eine TToolBar. Wie man sie nutzen kann guckstu hier bzw. hier

benji316 2. Jul 2013 16:09

AW: Benji´s kleines Zeichenprogramm
 
@Günther:Ich hab es auf mehreren Foren hochgeladen, und da bei jeder neuen Version überall zu aktualisieren ist etwas umständlich, deshalb über Mediafire, aber es müsste normalerweise gehen, dass wenn man auf den Dateinamen klickt, zu einer Seite weitergeleitet wird, wo mans dann downloaden kann.
Und aufs Einrücken und Benennen wurde ich auch schon woanders hingewiesen, bin grade dabei ;)

@MrMooed:
Ich verwende ja moveto und lineto, und wenn ich zur mit Delphi ermittelten Mausposition (mouse.cursorpos) hinzeichne, ist es um ca. 25 Pixel daneben, deshalb hab ich von der y-Koordinate einfach 25 abgezogen, dann passts bei mir.
Und das mit dem Minimieren ist mir bekannt, darum ist auch das entsprechende Bordericon nicht vorhanden ;).
Und das mit dem Überdecken ist, weil ich eine Paintbox verwende, ich hätte von Anfang ein ein TImage verwenden sollen, das werd ich wahrscheinlich demnächst mal umändern, wird ein Haufen Schreibarbeit bedeuten :|

Und das mit der Toolbar werd ich mir mal ansehn ;)

Neutral General 2. Jul 2013 16:23

AW: Benji´s kleines Zeichenprogramm
 
Hallo,

mouse.cursorpos gibt dir die globalen Mauskoordinaten.
Du solltest die entweder umrechnen oder die lokalen Koordinaten aus einem MouseMove Event o.ä. benutzen.

sx2008 2. Jul 2013 16:28

AW: Benji´s kleines Zeichenprogramm
 
Zitat:

Zitat von benji316 (Beitrag 1220444)
... weil ich eine Paintbox verwende, ich hätte von Anfang ein ein TImage verwenden sollen, das werd ich wahrscheinlich demnächst mal umändern, wird ein Haufen Schreibarbeit bedeuten :|

Aber nur weil du die guten Tricks noch nicht kennst.
Wenn du der Procedure die das Zeug zeichnet ein Canvas-Objekt übergeben würdest, dann könntest du an einer einzigen Stelle von Paintbox auf Image umschalten:
Delphi-Quellcode:
Procedure TForm1.ZeichneAlles(ACanvas:TCanvas);
begin
  // hier auf "ACanvas" zeichnen
end;

// und an anderer Stelle
ZeichneAlles(PaintBox1.Canvas);
// lässt sich leicht ersetzen durch
ZeichneAlles(Image1.Bitmap.Canvas);

benji316 2. Jul 2013 16:39

AW: Benji´s kleines Zeichenprogramm
 
Da ich aber von Anfang an auf die Paintbox gezeichnet habe, muss ich 100te Male "paintbox1" durch irgendeinen anderen Namen ersetzen.
Und um die Mausposition werd ich mich dann gleich mal kümmern ;)

MrMooed 2. Jul 2013 16:56

AW: Benji´s kleines Zeichenprogramm
 
Zitat:

Zitat von benji316 (Beitrag 1220450)
Da ich aber von Anfang an auf die Paintbox gezeichnet habe, muss ich 100te Male "paintbox1" durch irgendeinen anderen Namen ersetzen.
Und um die Mausposition werd ich mich dann gleich mal kümmern ;)

Für Tippfaule (wie mich :oops:) könntest du dein TImage auch einfach 'PaintBox1' nennen .. ist bestimmt nicht die schönste Variante, aber schnell :lol:
Andernfalls kopiere dir den Quelltext in eine Textverarbeitung und benutze die Funktion "Suchen / Ersetzen" (Strg. + [F])

benji316 2. Jul 2013 17:21

AW: Benji´s kleines Zeichenprogramm
 
Da hätt ich glatt selber draufkommen können, danke für den Hinweis :D
So, gleich gibts ne neue Verison, mit exakter Erfassung der Mausposition über screentoclient ;)

benji316 2. Jul 2013 17:28

AW: Benji´s kleines Zeichenprogramm
 
So, neue Version, mit exakter Erfassung der Mausposition, ein paar Benennungen und vielen Einrückungen beim Code zwecks besserer Lesbarkeit. Downloadlink ist im ersten Post.
Als nächstes werd ich mich dann mal um die Paintbox-Image-Geschichte kümmern ;)

benji316 2. Jul 2013 20:15

AW: Benji´s kleines Zeichenprogramm
 
Wieder neue Version, bin jetzt von der Paintbox auf ein TImage umgestiegen, ohne Probleme ;)
Ein Bug exisitiert leider noch: Im Polygon ist IMMER der Punkt (0,0) enthalten, aber warum, ich versteh´s nicht...

MrMooed 2. Jul 2013 20:30

AW: Benji´s kleines Zeichenprogramm
 
Zitat:

Zitat von benji316 (Beitrag 1220477)
Wieder neue Version, bin jetzt von der Paintbox auf ein TImage umgestiegen, ohne Probleme ;)
Ein Bug exisitiert leider noch: Im Polygon ist IMMER der Punkt (0,0) enthalten, aber warum, ich versteh´s nicht...

Das liegt dadran, dass du ein statisches Array verwendest. Bei der Initialisierung bekommt jedes deiner 100 Element in dem Array den Wert (0|0) zugewiesen. Zeichnest du nun ein Polygon und hast z.B. nur 5 Punkte ausgewählt, ändern sich deine ersten 5 Koordinaten - doch die restlich 95 haben immer noch die Koordinaten (0|0).

Hoffentlich habe ich mich nicht unklar ausgedrückt :oops: vielleicht verwendest du besser eine dynamische Datenstruktur (Liste, Queue, Stack, dyn. Array, ..) Damit müsstest du dein Polygon auch nicht auf "nur" 100 Punkte begrenzen :thumb:

benji316 3. Jul 2013 12:37

AW: Benji´s kleines Zeichenprogramm
 
Update:
Das Programm sollte nun komplett Bug-frei sein (alles funktioniert wie es soll, aber es ist leider immer noch möglich, es an einigen Stellen gezielt abstürzen zu lassen, werd mich heute noch darum kümmern ;)) hat ab sofort eine Versionsnummer (1.0) sowie eine Dateibeschreibung (sieht man unter den Eigenschaften oder wenn man mit dem Cursor drauf bleibt).
Weiters verwende ich nun den OpenPicture- bzw. SavePicture-Dialog, man kann Dateien nun als JPG, BMP, ICO, EMF und WMF speichern und auch solche Dateitypen öffnen (hätte ich gleich von Anfang an machen sollen, aber besser spät als nie :D)


Wenn ihr dennoch Bugs findet, bitte hier reinschreiben!
Falls jemand Vorschläge für neue Features hat, teilt sie mir mit!

Aktuelle ToDo-List:
Durch User hervorgerufene Abstürze verhindern
Die Computergeneriertes-Bild-Funktion leicht verändern
Funktion hinzufügen, um ein Bild in Graustufen umzuwandeln
Namen verändern
(evtl Toolbar statt MainMenu verwenden)

@MrMooed: Danke für den Tipp, du hast dich ganz klar ausgedrückt, Bug ist behoben :D

MrMooed 3. Jul 2013 13:05

AW: Benji´s kleines Zeichenprogramm
 
  • Minimiert man das Fenster und wählt das Computer generierte Bild, zeichnet er nur auf dem Ausschnitt, den man auch betrachten kann.
  • Speichert man das aktuelle Bild und möchte dann die Anwendung schließen, wird trotzdem nachgefragt ob man das Bild speichern möchte :gruebel:

It's not a bug - it's a feature :lol:

DeddyH 3. Jul 2013 13:57

AW: Benji´s kleines Zeichenprogramm
 
Zitat:

Zitat von benji316 (Beitrag 1220576)
Das Programm sollte nun komplett Bug-frei sein

Diesen Satz habe ich von erfahrenen Programmierern noch nie gehört, die werden schon wissen, wieso ;)

benji316 3. Jul 2013 19:08

AW: Benji´s kleines Zeichenprogramm
 
Für das computergenerierte Bild werden mit moveto hnd lineto Striche gezeichnet, und zwar zu einer Position im Bereich des Images, und da das Image die Ausrichtung "alclient" hat, ist es immer so groß wie das Fenster, ich könnte auch einfach einen festen Wert für die Zufallsberechung nehmen, aber je nach Bildschirmauflösung werden dann unnötige Striche gezeichnet...
Und der Speicher-Dialog kommt immer, sobald man irgendetwas gezeichnet hat, da werd ich mir was besseres einfallen lassen ;)

EDIT: Hab grade gesehen, dass man ganz einfach die aktuelle Bildschirmauflösung auslesen kann, also ist die jetzt die obere Grenze des Zufallsbereichs ;)

MrMooed 3. Jul 2013 19:41

AW: Benji´s kleines Zeichenprogramm
 
Zitat:

Zitat von benji316 (Beitrag 1220652)
Für das computergenerierte Bild werden mit moveto hnd lineto Striche gezeichnet, und zwar zu einer Position im Bereich des Images, und da das Image die Ausrichtung "alclient" hat, ist es immer so groß wie das Fenster, ich könnte auch einfach einen festen Wert für die Zufallsberechung nehmen, aber je nach Bildschirmauflösung werden dann unnötige Striche gezeichnet...

Warum so kompliziert ?
Zitat:

Zitat von MrMooed (Beitrag 1220443)
Was du noch verbessern/ einbringen könntest:
  • verschiedene Auflösungen. Öffnest du z.B. ein Icon (256x256) und möchtest es überarbeitet wieder abspeichern, nimmt er die Höhe und Breite deiner Form :wink:
  • es ist "unschön" sich durch das TMainMenu durchzuwursteln, bis man die Option gefunden hat. Gerade dazu predestiniert finde ich eine TToolBar. Wie man sie nutzen kann guckstu hier bzw. hier

Wenn du eine bestimmte Größe für dein Bild eingeben lässt, hättest du genauso deine Grenzen - und eine Benutzer definierte Größe seines "Kunstwerkes" :stupid:

benji316 3. Jul 2013 21:01

AW: Benji´s kleines Zeichenprogramm
 
Danke für den Tipp, habs derweil mit der Bildschirmauflösung berechnet. Aber wenn ich das so mache, dann mache ich gleich eine eigene Konfiguraions-Form für die Computer-generiertes-BIld-Funktion ;)

Neue Version (1.1.2 Beta), hier der Changelog:

Die Funktion "Computergeneriertes Bild erstellen" wurde überarbeitet, damit die Rechtecke nicht immer im Vordergrund sind
JPEG öffnen wird unterstützt, man kann sie aber nicht bearbeiten (geht nur für Bitmaps) ich werde versuchen, eine Funktion zur Umwandlung einzubauen
Stiftbreite wird nun über eine Scrollbar festgelegt, in einer Paintbox daneben sieht man, wie dick eine Linie dann ist
Wenn man ein Bild einmal gespeichert hat, wird man beim Beenden des Programms nicht mehr gefragt, ob man es speichern möchte

benji316 3. Jul 2013 22:30

AW: Benji´s kleines Zeichenprogramm
 
Neue Version (1.2 Beta)
Text-Ausgabe wurde komplett überarbeitet.

Medium 3. Jul 2013 23:50

AW: Benji´s kleines Zeichenprogramm
 
Zitat:

Zitat von benji316 (Beitrag 1220668)
JPEG öffnen wird unterstützt, man kann sie aber nicht bearbeiten (geht nur für Bitmaps) ich werde versuchen, eine Funktion zur Umwandlung einzubauen

Delphi-Quellcode:
var
  aBMP: TBitmap;
  aJPG: TJPEGImage;
begin
  aJPG := TJPEGIMage.Create;
  aJPGImage.LoadFromFile(FilePath);
  aBMP := TBitmap.Create;
  aBMP.Assign(aJPG);
  DoWhatYouDoWithBitmaps(aBMP);
  ...
end;

benji316 4. Jul 2013 15:32

AW: Benji´s kleines Zeichenprogramm
 
Danke für das Beispiel, habs aber auch so herausgefunden ;)

Nun gibts ein neues Update auf Version 1.3:
Changelog:
Man kann JPEGs öffnen, bearbeiten, und in verschiedenen Formaten speichern (GIF und PNG ausgeschlossen, da diese standardmäßig nicht unterstützt werden, wird aber noch kommen, ich muss nur eine passende Unit im Netz finden und in mein Projekt einbinden ;))
Einige Exceptions wurden hinzugefügt
Die wechselnde Stiftfarbe kann nun abgestellt werden (hätte man früher eigentlich auch können sollen, aber hat nicht funktioniert)
Beim Schliessen des Programms über Datei-->Schließen wird man nicht mehr zweimal gefragt, ob man die Datei vorher speichern möchte

Bekannte Bugs:
Wenn man das Öffnen eines JPEGs abbricht, gibts eine Access Violation, obwohl ich ein Try-Except eingebaut habe, und dieses auch ausgeführt wird

MrMooed 4. Jul 2013 15:56

AW: Benji´s kleines Zeichenprogramm
 
Guck dir nochmal genau
Delphi-Quellcode:
TOpenDialog.Execute
an :lol:

Das ist eine function mit einem Rückgabe Wert: Boolean.

Es liefert True bzw. False je nach dem ob der Dialog abgebrochen wurde oder nicht.

Delphi-Quellcode:
if TOpenDialog.Execute
then //Öffne das Bild

rob60 4. Jul 2013 16:58

AW: Benji´s kleines Zeichenprogramm
 
Witziges programm besonders die Funktion wechselnde Schriftfarbe finde ich mal etwas neues (erinnert mich irgendwie an meine Kindheit und diese 4-Farben schreiber ;-)) allerding fiel mir noch ein Bug auf, wenn man ein Rechteck aufzieht und wieder zusammenzieht entstehen hässliche Schlieren.

benji316 4. Jul 2013 17:40

AW: Benji´s kleines Zeichenprogramm
 
@MrMooed: Danke, jetzt gehts :D
@rob60: Ist mir bekannt, ich fands recht witzig, erinnert mich an alte Hänger bei Windows Xp, wo die Fenster solche "Schlieren" gemacht haben, aber ich sollte mich mal darum kümmern, jetzt, wo alles andere funktionieren sollte ;)

MrMooed 4. Jul 2013 17:51

AW: Benji´s kleines Zeichenprogramm
 
Zitat:

Zitat von benji316 (Beitrag 1220768)
[..] jetzt, wo alles andere funktionieren sollte ;)

Und du hast schon wieder die bösen zwei Wörter benutzt :roll:
Zitat:

Zitat von DeddyH (Beitrag 1220595)
Zitat:

Zitat von benji316 (Beitrag 1220576)
Das Programm sollte nun komplett Bug-frei sein

Diesen Satz habe ich von erfahrenen Programmierern noch nie gehört, die werden schon wissen, wieso ;)

Ohne, dass ich mir jetzt den Quellcode angesehen habe, aber benutzt du TTimer um die Stiftfarbe zu wechseln bzw. eine gepunktete Linie zu malen?
Zumindest letzteres ist extrem unpraktisch, da Timer viel zu schnell. Ich habe mich zuerst gefragt, ob du das noch nicht implementiert hast - tatsächlich war ich mit der Maus zu langsam. D.h. bei (wie ich finde) normal schnellen Bewegungen sieht man keine Punkte. Erst wenn man die Maus hin und her reißt erscheinen zaghaft Punkte.

Vllt. findest du ja eine Möglichkeit um zu ermitteln, wie weit der Mauszeiger gewandert ist. Dann könntest du nach z.B. 4cm die Farbe umschalten und nach weiteren 0.5cm wieder zurück schalten. :wink:

benji316 4. Jul 2013 18:22

AW: Benji´s kleines Zeichenprogramm
 
Nein, bei den Linien-Arten ich verwende die Eigenschaft Canvas.pen.style, deswegen auch die Limitierung auf Stiftbreite 1...
Bei der wechselnden Stiftfarbe verwende ich schon einen Timer, hatte es zuerst im MouseMove selbst drin, aber dann ists logischweise noch schneller ;)
Aber ich könnte mal schauen ob ich bezüglich Linien-Arten was zusammenbringe ;)
PS: Bei der Formulierung: "es sollte funktionieren" ist die Möglichkeit, dass etwas nicht funktioniert, nicht ausgeschlossen ;)

RWarnecke 5. Jul 2013 08:04

AW: Benji´s kleines Zeichenprogramm
 
Crosspost in der Entwickler-Ecke
Crosspost im Delphi-Treff

benji316 5. Jul 2013 13:16

AW: Benji´s kleines Zeichenprogramm
 
Na und?
Verstößt das gegen irgendwelche Regeln?
EDIT: In den anderen Foren muss ich bei Fragen darauf hinweisen, aber ich habe ja keine Frage gestellt.
Hier konnte ich nirgends etwas zum Thema Crosspostings finden.

DeddyH 5. Jul 2013 13:40

AW: Benji´s kleines Zeichenprogramm
 
Es geht doch nur darum, dass man ggf. in den anderen Foren nachschauen kann, ob das, was man schreiben möchte, nicht schon jemand Anderes geschrieben hat, das hat mit Frage oder nicht eher wenig zu tun. Ich war mir bei dieser Antwort ja auch nicht sicher, wo ich sie nun posten soll.

benji316 5. Jul 2013 16:55

AW: Benji´s kleines Zeichenprogramm
 
Okay, alles klar, es wird nun überall auf die jeweils anderen Threads verlinkt.

Und es gibt eine neue Version(1.4)!
Changelog:
Neue Funktion: Bild in Graustufen umwandeln (dauert ein paar Sekunden, ich habe versucht, den Fortschritt über eine Progressbar darzustellen, bin aber gescheitert)
Die Funktion "Computergeneriertes Bild erstellen" wurde überarbeitet
Keine Access-Violations mehr beim Öffnen einer JPG-Datei
Wenn ein JPG geladen wird, wird nun der Dateipfad in der Form-Caption angezeigt (passiert bei allen anderen Bildtypen schon länger, hab einfach vergessen, es auch hier einzubauen)

Download von exe und Code gibts wie immer hier:
http://www.mediafire.com/folder/gsyh...eichenprogramm

Valle 5. Jul 2013 21:59

AW: Benji´s kleines Zeichenprogramm
 
Hi, :hi:

ich habe lange überlegt ob ich es schreibe oder einfach stillschweigend die Klappe halte...

... aber wenn du mal Lust und Zeit hast dich auch um die krankhaften Rechtschreibfetischisten unter uns zu kümmern, dann schau doch mal da:

http://einklich.net/etc/apostroph.htm

tl;dnr: Der Apostroph befindet sich zwischen Enter und "Ä". " ` " ist ein französischer Akzent und findet nur zusammen mit anderen Buchstaben gebrauch ("è"). Wer den geraden Apostroph " ' " auf der Tastur nicht mag, kann sich auch des typographischen Apostrophs bedienen: " ’ ". Tatsächlich handelt sich bei "Benjis" aber um einen Genitiv, der im Deutschen nur in seltenen Ausnahmefällen vom Apostroph begleitet wird ("Max' Zeichenprogramm"). ;-)

Nichts für ungut. :-)

Liebe Grüße,
Valentin

benji316 7. Jul 2013 19:00

AW: Benji´s kleines Zeichenprogramm
 
Okay, alles klar, zumindest im Dateinamen ists nicht mehr drin, und ich hab wieder was dazugelernt :D

So, die finale Version 2.0 ist da!
Dies wird die endgültige Version bleiben, außer irgendjemand findet irgendwelche gravierenden Bugs ;)

Changelog:
Alle Units haben sprechende Namen
Die Funktion "Computergenerierte Linien erstellen" kann nun konfiguriert werden
Neue Funktion - Bilder invertieren
Ein paar kleinere Bugfixes
Nicht benutzte Variablen und Codefragmente wurden entfernt

Download von Exe und Quellcode (diesmal nur mit pas, dfm und dpr) gibts wie immer hier: http://www.mediafire.com/folder/gsyh...eichenprogramm

sx2008 7. Jul 2013 19:16

AW: Benji´s kleines Zeichenprogramm
 
Zitat:

Zitat von benji316 (Beitrag 1220993)
So, die finale Version 2.0 ist da!
Dies wird die endgültige Version bleiben

Schau dir deinen Code mal in einem Jahr an. :P
Ich bin sicher du findest noch ganz viele Dinge die man verbessern kann so nach dem Motto "mann, was habe ich denn damals für einen Käse programmiert?!" *)

Daher muss ich immer schmunzeln, wenn Programmierer meinen sie hätten die finale Version abgeliefert (es sei denn sie haben das Interesse verloren und machen etwas anderes).

*) wenn es nicht so wäre dann hättest du ja nichts dazugelernt

benji316 7. Jul 2013 19:34

AW: Benji´s kleines Zeichenprogramm
 
Mir würden da schon noch Sachen einfallen, die ich verbessern könnte, aber das wär dann zuviel Arbeit oder ich versteh einfach nicht, wie das geht, Stichwort Scanline..
Aber vorerst möchte ich mich was anderem zuwenden, ich hab schon eine vage Idee, aber mal sehen, was daraus wird, man wird auf jeden Fall noch von mir hören :D

benji316 10. Jul 2013 14:06

AW: Benji´s kleines Zeichenprogramm
 
Noch ein letztes Update:
Version 2.1:
Die "Wechselnde Stiftfarbe"-Funktion kann nun konfiguriert werden
Es werdne nun verschiedene Cursors verwendet, damit man auch sieht, was man gerade tut:
1 Cursor ist Windows-Standard, einer stammt von hier: http://ulrichhanke.de/00/CursorSammlung.html und zwei wurden aus Paint extrahiert
Das Invertieren eines Bildes geht nun deutlich schneller
Kleinere Bugfixes

benji316 15. Jul 2013 21:56

AW: Benji´s kleines Zeichenprogramm
 
in wirklich letztes Update:
Ein Radieren-Funktion wurde eingefügt, radiert wird mit gedrückter rechter Maustaste.
Außerdem wurde es nun mit Delphi XE3 kompiliert und ist nun entsprechend größer.

Download-Link:
http://www.mediafire.com/index.php#gsyhi84vsfwd4

benji316 9. Mär 2014 21:56

AW: Benji´s kleines Zeichenprogramm
 
So, ich hab mir wieder mal den Quelltext von diesem Programm durchgeschaut und bekam wieder Lust, was zu machen. Vielleicht werd ich in nächster Zeit irgendwann wieder ein Update raushauen, daher würde ich mich über weitere Vorschläge für neue Features freuen ;)
Und heute gibt es auch schonmal ein Update, mit mehreren, kleineren Änderungen (vor allem Ausbesserungen von Schlampigkeitsfehlern^^):


Das Programm merkt sich nun die vorherige Stiftfarbe bei Aktionen, die diese ändern (z.B. Polygon, Rechteck, Computergeneriertes Bild,..)
Das Programm hat nun ein Icon, (erstellt von Umar123, gefunden via iconfinder.com). Das liegt vor allem daran, dass ich das ursprüngliche Icon (Delphi-Standard) iwann gelöscht habe, und Delphi beim öffnen der Projektoptionen jedes Mal gemeckert hat, es kann die Datei nicht finden^^)
Eine temporäre Datei, die bei einer Funktion erstellt wird, ist nun wirklich nur temporär, wird also beim Beenden des Programms wieder gelöscht :D
Der "Wollen Sie die Datei speichern"-Dialog tritt nur auf, wenn die Datei in ihrer jetzigen Form nicht gespeichert wurde (bisher war es so: wenn die Datei einmal gespeichert wurde, und dann weiter verändert, wurde man beim Beenden nicht zum Speichern aufgefordert
Sonstige kleine Fixes


Download wie immer in meinem Mediafire-Folder: https://www.mediafire.com/#gsyhi84vsfwd4

benji316 12. Mär 2014 22:31

AW: Benjis kleines Zeichenprogramm
 
Version 2.2.0 ist da!

Changelog:
Man kann nun auch Bilder in den Formaten JPEG, PNG und GIF öffnen, bearbeiten und speichern, der extra Menüpunkt entfällt. Verwendet habe ich dazu TJPEGImage, TPNGImage und TGifImage, die, um Bearbeiten zu ermöglichen, intern zu TBitmap umgewandelt werden. Diese 3 Klassen gibt es allerdings erst seit Delphi 2009, mit älteren Delphi-Versionen lässt sich der Code daher nicht kompilieren!
Dadurch wurde der Menüpunkt "JPEG öffnen" überlüssing und wurde entfernt
Das Programm merkt sich nun auch die Stiftbreite, nicht nur die Stiftfarbe
Zufällige generierte Rechtecke haben jetzt eine zufällige Linienbreite
Die Breite des Radiergummis kann man nun extra einstellen
Bei den Computergenerierten Farbigen Linien wurde die höchstmögliche Linienanzahl begrenzt (auf 7 Stellen, höchstmögliche Anzahl daher 9.999.999), außerdem gibts ab 50.000 Linien eine Warnung, dass höhere Werte dazu führen können, dass das Programm nicht mehr reagiert (1 Million Linien dauern bei mir ca 2 Minuten, während der Berechnung reagiert das Programm nicht, mit mehreren Programmen im Hintergrund dauerts noch länger)
Diverse Code-Verinfachungen

Download wie immer hier:
https://www.mediafire.com/folder/gsy...eichenprogramm

Mir zurzeit bekannte Bugs:
Wenn man ein Bild aus einer Datei lädt, passt sich das Fenster der Größe des Bildes an, sodass das Bild die ganze Zeichenfläche füllt. Aber sobald man das Fenster verschieben will, oder einfach nur auf die Leiste ganz oben klickt, vergrößert es sich komischerweise, aber es maximiert sich auch nicht.

Sonstige Bugs bitte hier reinschreiben :)

Bjoerk 13. Mär 2014 15:10

AW: Benjis kleines Zeichenprogramm
 
Hallo Benji,

bist ja richtig fleißig.:thumb:

Hab mal kurz drüber geschaut. Was du langsam angehen könntest wären ein Zoom und den schrittweisen Aufbau einer Klasse z.B. TBenjiPaint in einer eigenen unit z.B. uBenjiPaint. Die MainForm hat dann nur noch eine Instanz davon und die Paintbox macht nur noch in PaintBox.Paint ein StrechDraw davon. Die Form delgiert also die zu erliegenden Aufgaben an diese Klasse. Dann wären auch die Verschachtelungen der units untereinander nicht mehr so stark weil jede unit (fast) nur noch die uBenjiPaint braucht. Wie man das macht, daß jede unit auf die aktuellen Werte dieser Klasse zugreifen kann muß man sich im Detail näher sehen, ist aber auch kein Hexenwerk. :wink:

LG
Thomas


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz