AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Halbkreis Zeichnen

Ein Thema von Mr.P-Funk · begonnen am 1. Mär 2004 · letzter Beitrag vom 2. Mär 2004
Antwort Antwort
Mr.P-Funk

Registriert seit: 9. Dez 2003
11 Beiträge
 
Delphi 5 Standard
 
#1

Halbkreis Zeichnen

  Alt 1. Mär 2004, 18:40
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
  Mit Zitat antworten Zitat
Urba

Registriert seit: 8. Dez 2002
Ort: Ketsch
120 Beiträge
 
Delphi 6 Personal
 
#2

Re: Halbkreis Zeichnen

  Alt 2. Mär 2004, 05:16
Du musst einfach "von rechts nach links" zeichnen

Canvas.Pie(10,10,100,100,100,55,10,55);
Es gibt keine blöden Fragen, nur blöde Antworten
  Mit Zitat antworten Zitat
Mr.P-Funk

Registriert seit: 9. Dez 2003
11 Beiträge
 
Delphi 5 Standard
 
#3

Re: Halbkreis Zeichnen

  Alt 2. Mär 2004, 09:06
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?
  Mit Zitat antworten Zitat
Benutzerbild von M-O-D
M-O-D

Registriert seit: 21. Feb 2004
Ort: Create(self)
74 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Halbkreis Zeichnen

  Alt 2. Mär 2004, 09:18
Hi,

Sowas is inner Komponenten Sammlung dabei... wie hieß die gleich , ach ja: TMSI
Das sind die Winamp Komponenten(Freeware) da is so eine Nadelanzeige dabei, kommt echt gut.

Gibts hier:

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

Die Komponente in der Sammlung heißt VRMeter.

CU
Ich lebe zwar über meine Verhältnisse, aber immer noch unter meinem Niveau...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#5

Re: Halbkreis Zeichnen

  Alt 2. Mär 2004, 09:25
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 ^^
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Halbkreis Zeichnen

  Alt 2. Mär 2004, 11:03
TGauge (Register: Beispiele) kann man auch benutzen.

Gauge1.Kind := gkNeedle; Aber bei deinem problem kann ich auch nicht helfen, sorry.
  Mit Zitat antworten Zitat
Mr.P-Funk

Registriert seit: 9. Dez 2003
11 Beiträge
 
Delphi 5 Standard
 
#7

Re: Halbkreis Zeichnen

  Alt 2. Mär 2004, 16:01
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:
 SelectClipRgn(Canvas.Handle, nil); Das nil ,muss durch MyRgn ersetzt werden dann klappt alles.

THX
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#8

Re: Halbkreis Zeichnen

  Alt 2. Mär 2004, 21:53
Hmm

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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 18:05 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