Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Halbkreis Zeichnen (https://www.delphipraxis.net/17244-halbkreis-zeichnen.html)

Mr.P-Funk 1. Mär 2004 18:40


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:

Urba 2. Mär 2004 05:16

Re: Halbkreis Zeichnen
 
Du musst einfach "von rechts nach links" zeichnen

Delphi-Quellcode:
Canvas.Pie(10,10,100,100,100,55,10,55);

Mr.P-Funk 2. Mär 2004 09:06

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:

M-O-D 2. Mär 2004 09:18

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:

http://www.ensacom.de/downloads/komponenten.php

Die Komponente in der Sammlung heißt VRMeter.

CU

himitsu 2. Mär 2004 09:25

Re: Halbkreis Zeichnen
 
Schon mal so (mir Regions) versucht?
Delphi-Quellcode:
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;
Da der untere Teil eh weggeschnitten wird, kannst du auch auf den einfacheren Befehl (Ellipse) zurückgreifen.


Ansonsten bleibt dann noch selber zeichnen - Pixel für Pixel ^^

Matze 2. Mär 2004 11:03

Re: Halbkreis Zeichnen
 
TGauge (Register: Beispiele) kann man auch benutzen.

Delphi-Quellcode:
Gauge1.Kind := gkNeedle;
Aber bei deinem problem kann ich auch nicht helfen, sorry.

Mr.P-Funk 2. Mär 2004 16:01

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:
 SelectClipRgn(Canvas.Handle, nil);
Das nil ,muss durch MyRgn ersetzt werden dann klappt alles.

THX
:coder:

himitsu 2. Mär 2004 21:53

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:
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;
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:
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