AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Benjis kleines Zeichenprogramm
Thema durchsuchen
Ansicht
Themen-Optionen

Benjis kleines Zeichenprogramm

Ein Thema von benji316 · begonnen am 2. Jul 2013 · letzter Beitrag vom 13. Mär 2014
Antwort Antwort
benji316

Registriert seit: 2. Jul 2013
Ort: Rosental an der Kainach
23 Beiträge
 
Delphi XE5 Architect
 
#1

Benjis kleines Zeichenprogramm

  Alt 2. Jul 2013, 14:41
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
Miniaturansicht angehängter Grafiken
screenshot2_7_13-copy-.png  
Angehängte Dateien
Dateityp: 7z Benjis_kleines_Zeichenprogramm_2.1.7z (10,6 KB, 51x aufgerufen)

Geändert von benji316 (10. Mär 2014 um 12:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Benji´s kleines Zeichenprogramm

  Alt 2. Jul 2013, 15:22
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.
fork me on Github
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.114 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Benji´s kleines Zeichenprogramm

  Alt 2. Jul 2013, 15:24
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?
  Mit Zitat antworten Zitat
Benutzerbild von MrMooed
MrMooed

Registriert seit: 18. Feb 2012
101 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Benji´s kleines Zeichenprogramm

  Alt 2. Jul 2013, 15:59
Hey,

cooles Programm

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
  • 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
  Mit Zitat antworten Zitat
Benutzerbild von MrMooed
MrMooed

Registriert seit: 18. Feb 2012
101 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Benji´s kleines Zeichenprogramm

  Alt 3. Jul 2013, 19:41
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 ?
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
  • 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"
Gruß,
MrMooed
"Unsere Luft hat einen Vorteil: Man sieht was man einatmet" - Ein Chinese
  Mit Zitat antworten Zitat
benji316

Registriert seit: 2. Jul 2013
Ort: Rosental an der Kainach
23 Beiträge
 
Delphi XE5 Architect
 
#6

AW: Benji´s kleines Zeichenprogramm

  Alt 3. Jul 2013, 21:01
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

Geändert von benji316 ( 3. Jul 2013 um 21:18 Uhr)
  Mit Zitat antworten Zitat
benji316

Registriert seit: 2. Jul 2013
Ort: Rosental an der Kainach
23 Beiträge
 
Delphi XE5 Architect
 
#7

AW: Benji´s kleines Zeichenprogramm

  Alt 2. Jul 2013, 16:09
@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
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Benji´s kleines Zeichenprogramm

  Alt 2. Jul 2013, 16:23
Hallo,

mouse.cursorpos gibt dir die globalen Mauskoordinaten.
Du solltest die entweder umrechnen oder die lokalen Koordinaten aus einem MouseMove Event o.ä. benutzen.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#9

AW: Benji´s kleines Zeichenprogramm

  Alt 2. Jul 2013, 16:28
... 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);
fork me on Github
  Mit Zitat antworten Zitat
benji316

Registriert seit: 2. Jul 2013
Ort: Rosental an der Kainach
23 Beiträge
 
Delphi XE5 Architect
 
#10

AW: Benji´s kleines Zeichenprogramm

  Alt 2. Jul 2013, 16:39
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:38 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