![]() |
Halbkreis Zeichnen
Hi Leutz,
Ich möchte eine analoge Anzeige basteln. Man kann sich das ganze so vorstellen wie ein Tacho im Auto. Allerdings soll es nur ein Halbkreis sein. Ich benutze dafür die pie funktion. Bsp: canvas.pie(0,0,200,200, 200,100,0,100); Nun das Problem das rechteck von 0,100,200,200 wo der untere halbkreis ist möchte ich gerne entfernen. Quasi ne pie funktion mit width=200 und height=100 mit nur einem Halbkreis. Habe schon alles probiert und steh im moment aufn Schlauch THX schonmal im voraus :coder: |
Re: Halbkreis Zeichnen
Du musst einfach "von rechts nach links" zeichnen
Delphi-Quellcode:
Canvas.Pie(10,10,100,100,100,55,10,55);
|
Re: Halbkreis Zeichnen
Das löst das Problem auch nicht.
Ich will eine Komponente erstellen mit nur dem Halbkreis. Wenn man jetzt die Piefunktion nutzt dann zeichnent er nen ganzen Kreis und blendet sozusagen den unteren Halbkreis aus. Die Anzeige soll über das ganze Formular gehn. Wenn man jetzt die Pie funktion nutzt bekomme ich vertikale Scrollbars. Weiß jemand wie ich von einem Object bestimmte Teile in ein Bitmap laden kann und ob sowas prinzipiell überhaupt möglich ist? :coder: |
Re: Halbkreis Zeichnen
Hi,
Sowas is inner Komponenten Sammlung dabei... wie hieß die gleich :gruebel: , ach ja: TMSI Das sind die Winamp Komponenten(Freeware) da is so eine Nadelanzeige dabei, kommt echt gut. :thuimb: Gibts hier: ![]() Die Komponente in der Sammlung heißt VRMeter. CU |
Re: Halbkreis Zeichnen
Schon mal so (mir Regions) versucht?
Delphi-Quellcode:
Da der untere Teil eh weggeschnitten wird, kannst du auch auf den einfacheren Befehl (Ellipse) zurückgreifen.
Var MyRgn: HRGN ;
Begin MyRgn := CreateRectRgn(0, 0, 200, 100); SelectClipRgn(Canvas.Handle, MyRgn); //Canvas.Pie(0, 0, 200, 200, 200, 100, 0, 100); Canvas.Ellipse(0, 0, 200, 200); SelectClipRgn(Canvas.Handle, nil); DeleteObject(MyRgn); End; Ansonsten bleibt dann noch selber zeichnen - Pixel für Pixel ^^ |
Re: Halbkreis Zeichnen
TGauge (Register: Beispiele) kann man auch benutzen.
Delphi-Quellcode:
Aber bei deinem problem kann ich auch nicht helfen, sorry.
Gauge1.Kind := gkNeedle;
|
Re: Halbkreis Zeichnen
Jo vielen Dank das Problem ist gelöst.
Die Lösung von himitsu ist wohl das Beste. Nur es enthält noch nen kleinen Fehler:
Delphi-Quellcode:
Das nil ,muss durch MyRgn ersetzt werden dann klappt alles.
SelectClipRgn(Canvas.Handle, nil);
THX :coder: |
Re: Halbkreis Zeichnen
Hmm :gruebel:
Ich verwende Regionen ja so selten und dann nur so, dass sie über die Gesamte Programmlaufzeit gelten. Aber ich dachte der Code sei so gemeint:
Delphi-Quellcode:
Wenn es mit dem Freigeben nicht geht, dann solltest du es wohl eher die zweite Zuweisung (SelectClipRgn) ganz löschen, denn eine doppelte Zuweisung ist ja Sinnlos:
Var MyRgn: HRGN;
Begin MyRgn := CreateRectRgn(0, 0, 200, 100); // Region erstellen SelectClipRgn(Canvas.Handle, MyRgn); // Region auf Canvas zuweisen Canvas.Ellipse(0, 0, 200, 200); // zeichnen SelectClipRgn(Canvas.Handle, nil); // Regionen in Canvas löschen DeleteObject(MyRgn); // Region freigeben/löschen End;
Delphi-Quellcode:
Var MyRgn: HRGN;
Begin MyRgn := CreateRectRgn(0, 0, 200, 100); SelectClipRgn(Canvas.Handle, MyRgn); Canvas.Ellipse(0, 0, 200, 200); DeleteObject(MyRgn); End; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz