MS PAINT nachprogrammieren
-
Hallo
ich arbeite mit dem C++ Builder 6 und würde gerne MS Paint "nachprogrammieren" um dann noch ein paar Verbesserungen einzufügen.
Leider habe ich keine Ahnung wie ich das machen soll bzw. welche Komponenten für so etwas geignet sind.
Vielleicht könnt ihr mit ein paar Links oder Tipps geben.MfG Kevka
-
Hallo,
Bezüglich fertiger Komponenten kannst du ja mal hier nachschauen
http://www.torry.net/pages.php?id=112
Ansonsten kannst du es natürlich von Grund auf unter Verwendung von TPaintBox (bzw. TCanvas) selber machen.
-
Braunstein schrieb:
Ansonsten kannst du es natürlich von Grund auf unter Verwendung von TPaintBox (bzw. TCanvas) selber machen.
Das würde ich gerne machen habe aber zufor noch nie etwas von der TPaintBox gehört und kann mit ihr nichts anfangen über Carvas stand in meinem Buch nur wie ich Linien Elipsen und Text auf die Form malen kann.
Kannst du mir ein gutes (online)Tutorial empfehlen??
-
Hallo Leute
Ich möchte Windows XP "nachprogrammieren"
Bin aber absoluter Neuling in Sachen programmieren...
Kann mir einer sagen wo ich anfangen soll?
LOLBis Bald...
wNw
-
@wNw
schau halt nach guten (online)Tutorial's, damit du XP nach programmieren kannst
-
Tja dann sagt mir halt woher ihr euer Wissen habt wenn ihr soo schlau seit!!!
-
Was soll man dazu sagen?
Meinst du ein Programm wie Paint , lässt sich mit ein paar Code Zeilen nachbauen?
Hast du denn überhaupt schonmal TCanvas oder andere Grafik Libs angeguckt und getestet?Hast du denn schon mal was leichteres wie Notepad etc. versucht nach zu programmieren?
Ich hab mit den guten alten CLI angefangen, da kannst dich auf das wirklich c/c++ konzentrieren ohne an so ner GUI rumzuspielen, bei Problemen gibt es Google oder das Forum hier.
Und als unangenehmer Begleiter musste ich mich mit Try and Error arrangieren.
-
kevka schrieb:
Tja dann sagt mir halt woher ihr euer Wissen habt wenn ihr soo schlau seit!!!
Hauptsächlich aus Eigeninitiative. Nach dem Motto "Weiß nicht, wie's geht -> Wo steht, wie das geht?" kommst du nicht weit; und fertige "Paint-Nachprogrammier-Tutoriale" wirst du im Inet kaum finden! Also nimm dir lieber kleinere Probleme vor, die du auch bewältigen kannst! An denen wächst du mehr als an einem für deine Fähigkeiten utopischen Projekt, welches auf Grund derselben zum Scheitern verurteilt ist.
-
xp äääh, naja, zumindest nt wurde schon nachprogrammiert. schimpft sich 'reactos'
--> http://www.reactos.org/xhtml/en/index.html
und ein anfang für ein eigenes m$-paint wäre z.b. sowas: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vctutor98/HTML/_gs_scribble_tutorial.asp
btw: ausserdem kursieren immer noch die nt-sourcecodes in diversen filesharingsystemen. da ist 'paint' (glaube ich) auch dabei...
-
Reyx schrieb:
fertige "Paint-Nachprogrammier-Tutoriale" wirst du im Inet kaum finden!
So habe ich das auch nicht gemeint ich suche eher eine Refferenz über TCanvas und TPaintBox.
Aber ihr habt Recht und ich sollte noch ein paar Jahre üben bevor ich mich an so etwas setze.
MfG kevka
-
Hallo
Die beste Referenz zu den VCL-Komponenten ist immer noch die BCB-Hilfe.
bis bald
akari
-
Hi,
ich kann aus Erfahrung sprechen da ich ein kleines Cad-Programm geschrieben habe. Ich hab die TPaintbox Komponente benutzt.
Dein vorhaben ist dagegen einfach. Denn du musst dir ja keine Formen merken, wie z.b Kreise, Vierecke etc.
Die TPaintBox besitzt doch TCanvas.
Du musst einfach in den TPaintBox Mous-Events, wie z.B OnMousDown, OnMousMove und OnMousUp eine logik einbauen die so gestaltet ist und erkennt ob du nun einen Strich Kreis Elipse oder Viereck malen willst.
Um so eine Logik zu verwirklichen baust du in die TForm-Header (form1.h) 4 public- bool's ein. Diese bools setzt du im Konstruktor deiner Form alle auf false (sicher ist sicher). Jetzt setzt du 4 TSpeedButtons ab, und verleist ihnen ein Symbol (Kreis viereck...) als Bitmap.
Also wenn du den kreis drückst dann wird die bool für den Kreis true die anderen false. (das gleiche Schema für den Viereck-Button....)
Jetzt kommt als nächstes das OnMousDown Ereigniss der TPaintBox-Komponente, da du mit zeichen anfangen wilst. Da du in OnMousDown ein logik hast die erkennt was du wilst, wird es funktionieren. Diese Logik muss auch für die anderen 2 Ereignisse verwendet werden.
Zum Anfang empfehle ich dir nur OnMousDown und OnMousUp zu verwenden.
Bei einem Strich musst du dir den Anfangspunkt der linie (global) merken (in OnMousDown wird X, Y Koordinate des Punktes (x1,y1) übergeben).
Bei OnMousUp wird die Linie beendet, also wenn du den Mous-Knopf loslässt.
Diesem Ereigniss wird ebenfalls die Koordinate übergeben (x2,y2).
Wenn das passiert ist dann machst du
PaintBox1->Canvas->MoveTo(x1,y1);
PaintBox1->Canvas->LineTo(x2,y2);
Strichfarbe:
PaintBox1->Canvas->Pen->Color=clBlue;
Strichdicke:
PaintBox1->Canvas->Pen->Width=5;
gestrichelt:
PaintBox1->Canvas->Pen->Mode=//Borland hilfe durch drücken von F1 um mode... oder ALT+Leertaste
Bei einer elipse machst du
PaintBox1->Canvas->Ellipse(x1,y1,x2,y2);
Rand einsellungen ist der Canvas->Pen
das Füllmuster ist Canvas->Brush.
Als Krönung deines Vorhabens kannst du noch das OnMouseMove Ereigniss dazu benutzen um in Echtzeit einen vorgeschack der zu zeichnenden Linie zu geben. Dazu den alten strich übermalen und mit neuem ersetzen.
(such mal in der Borland hilfe nach pmNotXor, ich kann nicht mehr sagen ob diese Konstante zum Brush oder Pen Mode gehört.
Auf jedenfall kannst du so irgendwie verhindern das in OnMouseMove der alte Strich auch die Darunter liegende Form mit löscht, und z.B in einem Kreis ein weiser strich bleibt!!!)Güsse