AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Vector Pie mit der graphics32
Thema durchsuchen
Ansicht
Themen-Optionen

Vector Pie mit der graphics32

Ein Thema von Wishmaster · begonnen am 26. Jan 2016 · letzter Beitrag vom 4. Feb 2016
Antwort Antwort
Seite 1 von 2  1 2      
Wishmaster

Registriert seit: 14. Sep 2002
Ort: Steinbach, MB, Canada
301 Beiträge
 
Delphi XE2 Architect
 
#1

Vector Pie mit der graphics32

  Alt 26. Jan 2016, 06:58
So ich versuchen einen Pie zu zeichnen mit der graphics32 Lib.
genauer gesagt möchte ich die Vector variante davon benutzen. die in der GR32_VectorUtils.pass zu finden ist

mit der standard "Canvas.Pie" funktioniert das einwandfrei, die ist mir aber zu zackig.
mit der Vector variante komme ich einfach nicht klar.

ich möchte den Start-Angle eingeben und mit der maus die position setzen




Delphi-Quellcode:
function GetAnglePosition(R : TRect; FBaseAngle, FMin, FMax, FPosition : Integer): TPoint;
var
  a: Double;
begin
  a:=(FBaseAngle - 90) + 360 * (FPosition /(FMax - FMin) - FMin);
  a:= pi * a / 180;
  with R do
  begin
    Result.X:= Round(Cos(a) * (Right - Left) / 2 + (Left + Right) / 2);
    Result.Y:= Round(Sin(a) * (Bottom - Top) / 2 + (Bottom + Top) / 2);
  end;
end;


var
   R: TRect;
   P1, P2: TPoint;


    P1:= GetAnglePosition(R, 0, 0, 360, 180);
    P2:= GetAnglePosition(R, 0, 0, 360, -180 + Position);
    Buffer.Canvas.Pen.Color:= $00606060;
    Buffer.Canvas.Brush.Color:= clred;
  if Position > 0 then
    Buffer.Canvas.Pie(R.Left + 5, R.Top + 5, R.Right-5, R.Bottom-5, P2.X,P2.Y,P1.X,P1.Y);
Miniaturansicht angehängter Grafiken
snap4.jpg   snap5.jpg   snap6.jpg   snap7.jpg  
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
670 Beiträge
 
#2

AW: Vector Pie mit der graphics32

  Alt 26. Jan 2016, 10:56
Weiss nicht wo genau Dein Problem ist, aber Du mußt mit diesem Pie() auf ein TBitmap32 zeichnen und dann von TBitmap32 auf das Canvas (mit einem Handle) übertragen.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Vector Pie mit der graphics32

  Alt 26. Jan 2016, 16:18
Die GR32_VectorUtils.pas befindet sich nicht in dem normalen GR32 Paket von SourceForge, und ist auch nicht in der CHM-Doku erwähnt. Im Netz finde ich sie auch auf die Schnelle nicht. Es wäre schon ganz nett, wenn du Quellen für non-Standard Erweiterungen zumindest verlinken würdest, weil im Moment hat keiner eine Chance zu gucken was die Methoden da überhaupt an Parametern erwarten. (Zumal du ja nichtmals einen Aufruf in deinem Code illustrierst.)
Wo ist überhaupt genau das Problem? "komme ich einfach nicht klar" ist keine Fehlerbeschreibung, und hilft auch keinem auch nur im Ansatz zu verstehen was du bisher gemacht hast, und was dabei falsches passiert. Es sagt nichtmals was darüber aus womit du nicht klar kommst. Einbindung? Aufrufe? Sieht falsch aus? Zeichnet nichts? Was denn? Vor allem: In wie hängen deine Bilder mit dem Problem zusammen!? Oder wolltest du die einfach mal nur zeigen weil sie hübsch sind?
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
670 Beiträge
 
#4

AW: Vector Pie mit der graphics32

  Alt 26. Jan 2016, 16:30
VectorUtils liegt hier mit drin. Ich glaub, es kommt aus diesem TLine32.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Wishmaster

Registriert seit: 14. Sep 2002
Ort: Steinbach, MB, Canada
301 Beiträge
 
Delphi XE2 Architect
 
#5

AW: Vector Pie mit der graphics32

  Alt 27. Jan 2016, 02:08
okay, @Medium erstens möchte ich mich entschuldigen das du mich nicht verstanden hast.
ich weiß zwar nicht welche version du benutzt aber wie Jens01 schon gesagt hat liegt die GR32_VectorUtils.pas mit in dem packet.
und ich denke ich habe versucht mit den bildern zu demonstrieren was ich bis jetzt gemacht habe und gleichzeitig was ich machen möchte.

wenn du dir die bilder anschaust habe ich den pie (in Rot) erfolgreich gezeichnet und kann den winkel auch mit der Maus/Timer ändern,
alerding mit der standardfunktion. also mit Canvas.Pie


die Pie funktion aus der GR32_VectorUtils hat ganz andere parameter den die aus der Vcl.Graphics unit.
so ich dachte einer von euch kennt sich mit der funktion aus und könnte mir bei der übersetzung weiterhelfen.

bei der standardversion sind die ränder zu zackig also kein anti aliasing.

ich versuche ein ähnliche komponenten set zu schreiben wie Abakus VCL
nur die besser aussehen und open source sind!

ich komme auch gut voran, allerdings machen einige funktionen mich wahnsinnig.
alle komponenten basieren auf graphics32.
  Mit Zitat antworten Zitat
Wishmaster

Registriert seit: 14. Sep 2002
Ort: Steinbach, MB, Canada
301 Beiträge
 
Delphi XE2 Architect
 
#6

AW: Vector Pie mit der graphics32

  Alt 27. Jan 2016, 03:19
so nach langem rumtüfteln habe ich es hingekriegt.
Miniaturansicht angehängter Grafiken
snap8.jpg  
  Mit Zitat antworten Zitat
Rollo62
Online

Registriert seit: 15. Mär 2007
3.907 Beiträge
 
Delphi 12 Athens
 
#7

AW: Vector Pie mit der graphics32

  Alt 27. Jan 2016, 06:47
Vielleicht schaust du dir auch mal Gr32_Ex an.

Da wird gezeigt das ArrayOfFloatPoint mit gPolyBezier(xBitmap, PP, xColor, xOptions, true); abgerundet wird.
Das könnte vielleicht für dich interessant sein:

Delphi-Quellcode:
{ draw elliptic and transformed pie }
procedure gPieET(xBitmap : tBitmap32;
                         const xCenter : tFixedPoint;
                         const xA, xB : GR32.tFixed;
                         const xStartAngle, xEndAngle : double; { values in radians }
                         const xAT : TFloatMatrix; { affine transformation matrix }
                         const xColor : tColor32;
                         const xOptions : tPolygonDrawOptions = pdoFloat);
var
  PP : TArrayOfFixedPoint;
  L : integer;
begin
  SetLength(PP, 0);
  LoadArcCurve(xCenter, xA, xB, xStartAngle, xEndAngle, PP);

  { connect with center }
  L := Length(PP);
  SetLength(PP, L + 3);
  PP[L] := PP[L-1];
  PP[L + 1] := xCenter;
  PP[L + 2 ] := xCenter;

  TransformArrayOfFixedPoint(PP, xAT);
  gPolyBezier(xBitmap, PP, xColor, xOptions, true);

  PP := nil;
end;

Rollo
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#8

AW: Vector Pie mit der graphics32

  Alt 28. Jan 2016, 11:01
VectorUtils liegt hier mit drin. Ich glaub, es kommt aus diesem TLine32.
In der normalen Seite für die Release-Versionen hier ist es nicht enthalten, und gehört somit nicht zum Basisumfang der GR32. Ob und wer da wann und wo welche Dinge hinzugefügt hat ist in dem Projekt äusserst undurchsichtig. Eine Suche bei Google nach dem Unitnamen hat mich auch nicht innerhalb von wenigen Minuten auf die von dir verlinkten Seiten geführt. Von daher finde ich meinen Einwand nach wie vor berechtigt. Aber freut mich, dass es jetzt klappt.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#9

AW: Vector Pie mit der graphics32

  Alt 28. Jan 2016, 12:05
@Medium:
Wie wärs mit der Dateihistory?
http://sourceforge.net/p/graphics32/...ectorUtils.pas

EDIT: Außerdem ist das letzet Release von 2013 und die letzten Änderungen von Dezember 2015. Würde also nicht allzuviel auf die releases geben.
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden

Geändert von Memnarch (28. Jan 2016 um 12:09 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#10

AW: Vector Pie mit der graphics32

  Alt 28. Jan 2016, 19:39
Und das soll jetzt jemand, der das Projekt nicht aktiv verfolgt, sondern nur ab und zu mal nutzt wissen? Wenn ich auf die Seite der GR32 gehe gibts unter Download einen Link auf das SF-Projekt. Dort geht man, wenn man einfach nur eben das letzte Release haben will, direkt auf "Files", nimmt das letzte wo irgendwas mit "stable" dran steht und die höchste Nummer hat, und will dann gerne mit der eigentlichen Arbeit weiter machen. Sorry, aber wenn seit 2013 noch aktiv daran gearbeitet wurde, dann ist das Projekt einfach schlampig geführt. Vor allem wenn solche schon nicht mehr ganz so kleinen Features für Jahre nicht im "official release" auftauchen. Ich habe besseres zu tun als mich mit der Versionshistorie aller Projekte intensiv zu befassen die ich sporadisch und spontan nutze um etwas nicht selbst machen zu müssen, und an und für sich bin ich mit meiner "halben" Releaseversion der GR32 auch sehr zufrieden. (Bevor ich zu viel Zeit ins Suchen stecke, mache ich vieles auch eben einfach selbst. Gerade auch weil ich schon etwas Erfahrung mit der oftmals ganz tollen "Dokumentation" von OS Projekten habe - wobei die GR32 hier sogar ein sehr positives Beispiel ist.) Und wenn ich mich schon nicht für mich durch solches Gewurste kämpfe...
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:03 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