Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   TCanvasEx (TCanvas Class-Helper Addon) (https://www.delphipraxis.net/118674-tcanvasex-tcanvas-class-helper-addon.html)

Neutral General 12. Aug 2008 20:53


TCanvasEx (TCanvas Class-Helper Addon)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

Hier stelle ich mein TCanvas "Addon" vor. Dies ist die absolut erste Version, d.h. ca. Alpha 0.0.0.0.1

Vorraussetzungen:
  • Delphi-Version, die Class-Helper unterstützt.

Neue Methoden:
  • procedure TextOut(x,y: Integer; Text: String; Angle: Integer); overload;
    • TCanvas.TextOut wurde überladen. Mit dieser Version kann man gedrehte Texte ausgeben.
  • function TextWidth(Text: String; Angle: Integer): Integer; overload;
    • TCanvas.TextWidth wurde überladen. Mit dieser Version wird die Breite eines gedrehten Texts ermittelt.
  • function TextHeight(Text: String; Angle: Integer): Integer; overload;
    • TCanvas.TextHeight wurde überladen. Mit dieser Version wird die Höhe eines gedrehten Texts ermittelt.
Bugs:
  • Die überladenen TextWidth/TextHeight Methoden sind z.T. um bis zu 4 Pixel (manuell getestet) ungenau.

Ich werde diese Unit aber noch weiterentwickeln.

bigben37 12. Aug 2008 21:40

Re: TCanvasEx (TCanvas Class-Helper Addon)
 
hi,

ich find das ist eine gute Idee.
Du könntest noch z.B. eine Procedure für einen Kreiß Kreis, Dreieck erstellen.

Die Muhkuh 12. Aug 2008 21:42

Re: TCanvasEx (TCanvas Class-Helper Addon)
 
Kreis? :mrgreen:

bigben37 12. Aug 2008 21:55

Re: TCanvasEx (TCanvas Class-Helper Addon)
 
Ja (mit s), so ungefähr:

Delphi-Quellcode:
procedure Circle(x, y, r: Integer); //x: x Position des Mittelpunkts
                                     //y: y Position des Mittelpunkts
                                     //r: Radius des Kreises
begin
  Canvas.Ellipse(x-r, y-r, x+r, y+r);
end;

Die Muhkuh 12. Aug 2008 21:59

Re: TCanvasEx (TCanvas Class-Helper Addon)
 
Hi,

dann würde ich aber zwei Prozeduren machen. Eine, die als Ursprung den Mittelpunkt hat und eine, deren Ursprung links oben ist. (Da entfällt das x-r, y-r).

Bernhard Geyer 12. Aug 2008 22:00

Re: TCanvasEx (TCanvas Class-Helper Addon)
 
Am besten auch gleich alle Methoden mit Text als Widestring/Unicode damit auch alte Delphi-Versionen in den genuss einer einfachen Full-Unicodeunterstützung kommen :-)

Die Muhkuh 12. Aug 2008 22:01

Re: TCanvasEx (TCanvas Class-Helper Addon)
 
Kann das das ElPack nicht? :mrgreen:

*SCNR*

bigben37 12. Aug 2008 22:02

Re: TCanvasEx (TCanvas Class-Helper Addon)
 
zu #5:

aber dafür muss man den Radius bei den x+r und y+r verdoppeln :wink:

und dann schreibt man am besten das Ganze noch für den Durchmesser :stupid:

Bernhard Geyer 12. Aug 2008 22:03

Re: TCanvasEx (TCanvas Class-Helper Addon)
 
Zitat:

Zitat von Die Muhkuh
Kann das das ElPack nicht? :mrgreen:

*SCNR*

Nicht auf TCanvas-Ebene. Hier wurden (aufgrund der Tatsache das bisher auch D5/6/7 unterstützt wurde) keine Class Helper verwendet.

Die Muhkuh 12. Aug 2008 22:04

Re: TCanvasEx (TCanvas Class-Helper Addon)
 
Das sollte ein Witz sein, Bernhard, weil Du das ElPack recht oft erwähnst :zwinker:

Die Muhkuh 12. Aug 2008 22:05

Re: TCanvasEx (TCanvas Class-Helper Addon)
 
Zitat:

Zitat von bigben37
aber dafür muss man den Radius bei den x+r und y+r verdoppeln :wink:

und dann schreibt man am besten das Ganze noch für den Durchmesser :stupid:

Oder man überlädt es und machte beide Varianten :stupid:

bigben37 12. Aug 2008 22:12

Re: TCanvasEx (TCanvas Class-Helper Addon)
 
Zitat:

Zitat von Die Muhkuh
Oder man überlädt es und machte beide Varianten :stupid:

Wie willst du das mit überladen machen?
Ich meine, wie kannst du feststellen ob der Benutzer von oben links zeichnen will oder vom Mittelpunkt aus,
ohne noch einen 4. Parameter zu übergeben (was zu einer If-Abfrage führen würde, also auch kein überladen). :gruebel:

Ich würde des mit 2 unterschiedlich benannten Proceduren machen;

Die Muhkuh 12. Aug 2008 22:14

Re: TCanvasEx (TCanvas Class-Helper Addon)
 
Ach geh weg. Ich bin zu müde für das. *g*

Natürlich geht das mit überladen nicht, wo hab ich nur mein Kopf.

*still ist*

Aber wäre schon übertrieben, 3 Prozeduren zum Zeichnen eines Kreises.

bigben37 12. Aug 2008 22:17

Re: TCanvasEx (TCanvas Class-Helper Addon)
 
sind's nicht 4 :?:

-Radius Mittelpunkt
-Radius oben links
-Durchmesser Mittelpunkt
-Durchmesser oben links

Neutral General 12. Aug 2008 22:22

Re: TCanvasEx (TCanvas Class-Helper Addon)
 
Hi,

Leute, ihr habts auch mit euren Kreisen oder? :mrgreen:
Es wird eine Kreis-Methode geben. Ich suche mir 1-2 der ca. 46 geposteten Methoden aus :lol:

Bin jetzt müde und werde dann morgen Mittag/Abend Stellung zu den einzelnen Posts nehmen ;)

Gute Nacht :)

Gruß
Neutral General

Die Muhkuh 12. Aug 2008 22:22

Re: TCanvasEx (TCanvas Class-Helper Addon)
 
Dann nehmen wir noch mal vier dazu.

Einmal ist ja x,y als Parameter und einmal noch TPoint :stupid:

Neutral General 13. Aug 2008 17:00

Re: TCanvasEx (TCanvas Class-Helper Addon)
 
Hi,

Zitat:

Zitat von Bernhard Geyer
Am besten auch gleich alle Methoden mit Text als Widestring/Unicode damit auch alte Delphi-Versionen in den genuss einer einfachen Full-Unicodeunterstützung kommen :-)

Das ist eine sehr gute Idee. Kommt auf meine imaginäre Todo-Liste ;) (Auch wenn ich Unicode nicht leiden kann :mrgreen: )

Die Circle-Methode wird auch eingebaut werden.

Namenloser 13. Aug 2008 17:17

Re: TCanvasEx (TCanvas Class-Helper Addon)
 
Was ich viel interessanter als 1001 kreis-Methoden fände, wär eine Methode Line(x1,y1,x2,y2[,farbe]). MoveTo und LineTo find ich sowas von umständlich...

Bernhard Geyer 13. Aug 2008 21:40

Re: TCanvasEx (TCanvas Class-Helper Addon)
 
Zitat:

Zitat von Die Muhkuh
Das sollte ein Witz sein, Bernhard, weil Du das ElPack recht oft erwähnst :zwinker:

Aber wäre doch eine gute Erweiterung für das ElPack. Nachdem mit dem nächsten Major-Release vom ElPack alte Delphi-Versionen nicht mehr unterstützt werden könnten sie sowas einbauen ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:11 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