AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Zeichnen auf Canvas und ZOrder bzw. Übermalen
Thema durchsuchen
Ansicht
Themen-Optionen

Zeichnen auf Canvas und ZOrder bzw. Übermalen

Ein Thema von EWeiss · begonnen am 2. Apr 2015 · letzter Beitrag vom 2. Apr 2015
Antwort Antwort
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.749 Beiträge
 
Delphi 2007 Professional
 
#1

AW: Zeichnen auf Canvas und ZOrder bzw. Übermalen

  Alt 2. Apr 2015, 10:56
Zitat:
Freilich geht das.
Nö! nicht mit Canvas.
Ich hab deinen Code mal in eine lauffähige Form gebracht und sehe Kreise über Strichen:
Delphi-Quellcode:
procedure DrawEllipseFromCenter(Canvas: TCanvas; XOffset: integer; YOffset: integer; RadiusOfCircle: Integer);
var
  R: TRect;
begin
  R.Top := YOffset - RadiusOfCircle;
  R.Left := XOffset - RadiusOfCircle;
  R.Bottom := YOffset + RadiusOfCircle;
  R.Right := XOffset + RadiusOfCircle;
  Canvas.Ellipse(R);
end;

procedure TForm2.PaintFramePaint(Sender: TObject);
var
  Bitmap: TBitmap;
const
  Physics_x0 = 100;
  Physics_x1 = 200;
  Physics_y0 = 100;
  Physics_y1 = 200;
  Physics_r0 = 30;
  Physics_r1 = 40;
  xFact = 1;

  function xxc(x: Integer): Integer;
  begin
    Result := x;
  end;

  function yyc(y: Integer): Integer;
  begin
    Result := y;
  end;

begin
  Bitmap := TBitmap.Create;
  try
    Bitmap.SetSize(PaintFrame.ClientWidth, PaintFrame.ClientHeight);

    Bitmap.Canvas.Font.Color := clblack;
    Bitmap.Canvas.Pen.Width := 1;
    //PrepareScale;

    // Linie an der das Pendel (Ball) hängt
    Bitmap.Canvas.Pen.Color := clblack;
    Bitmap.Canvas.MoveTo(xxc(Physics_x0), yyc(Physics_y0));
    Bitmap.Canvas.LineTo(xxc(Physics_x1), yyc(Physics_y1));

    Bitmap.Canvas.Brush.Style := bsSolid;
    Bitmap.Canvas.brush.Color := clblack;
    Bitmap.Canvas.Pen.Width := 5;
    // Center Punkt
    DrawEllipseFromCenter(Bitmap.Canvas, xxc(Physics_x0), yyc(Physics_y0), round(Physics_r0 * xFact));

    // Ball
    Bitmap.Canvas.brush.Color := clred;
    Bitmap.Canvas.Pen.Width := 2;
    DrawEllipseFromCenter(Bitmap.Canvas, xxc(Physics_x1), yyc(Physics_y1), round(Physics_r1 * xFact));

    // vom Bitmap auf das Canvas kopieren
    BitBlt(PaintFrame.Canvas.Handle, 0, 0, Bitmap.Width, Bitmap.Height, Bitmap.Canvas.Handle, 0, 0, srccopy);
  finally
    Bitmap.Free;
  end;
end;
(PaintFrame ist dabei eine TPaintBox) Also irgendwie zeigst du uns nicht das Relevante.
Uli Gerhardt
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Zeichnen auf Canvas und ZOrder bzw. Übermalen

  Alt 2. Apr 2015, 11:04
Zitat:
Also irgendwie zeigst du uns nicht das Relevante.
Hab meinen Beitrag nochmal editiert.

gruss
  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 19:19 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