AGB  ·  Datenschutz  ·  Impressum  







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

TrackBar Zoomen in einer Paintbox

Ein Thema von Blubbel · begonnen am 17. Okt 2011 · letzter Beitrag vom 21. Okt 2011
Antwort Antwort
Seite 2 von 4     12 34      
Blubbel

Registriert seit: 6. Okt 2011
125 Beiträge
 
Delphi 2010 Professional
 
#11

AW: TrackBar Zoomen in einer Paintbox

  Alt 17. Okt 2011, 10:57
gut ok... Danke schön
  Mit Zitat antworten Zitat
Blubbel

Registriert seit: 6. Okt 2011
125 Beiträge
 
Delphi 2010 Professional
 
#12

AW: TrackBar Zoomen in einer Paintbox

  Alt 19. Okt 2011, 09:39
Gibt es noch andere Möglichkeiten zum Zoomen?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: TrackBar Zoomen in einer Paintbox

  Alt 19. Okt 2011, 09:43
Was genau willst Du denn zoomen? Etwas Selbstgezeichnetes oder eine bestehende Pixelgrafik? Ersteres geht wie gezeigt mit Prozentrechnung oder indem man Vektorgrafik benutzt (TMetafile, TMetaFileCanvas).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Blubbel

Registriert seit: 6. Okt 2011
125 Beiträge
 
Delphi 2010 Professional
 
#14

AW: TrackBar Zoomen in einer Paintbox

  Alt 19. Okt 2011, 09:52
Also, ich habe ja die Canvas, auf der schon das Koordinatensystem gezeichnet ist.
Jetzt möchte ich ja dass die komplette Canvas gezoomt werden kann... also nicht nur größer auch kleiner. Wenn die Parabel auch schon darauf gezeichnet wurde, soll auch die mit größer/kleiner gemacht werden können.

Also, naja.... mehr oder weniger ein selbergezeichnetes... denk ich
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: TrackBar Zoomen in einer Paintbox

  Alt 19. Okt 2011, 09:55
Was spricht denn gegen ein komplettes Neuzeichnen? Wenn die Berechnungen nicht zu langwierig sind sollte das ja kein Problem sein, anders habe ich das in meinem Beispiel ja auch nicht gemacht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Blubbel

Registriert seit: 6. Okt 2011
125 Beiträge
 
Delphi 2010 Professional
 
#16

AW: TrackBar Zoomen in einer Paintbox

  Alt 19. Okt 2011, 09:58
Also bau ich noch mit ein, dass er den Graphen, der auf "Knopfdruck" gezeichnet wird und das Koordinatensystem neu gezeichnet werden.. hmm.. ok ich versuchs auf jeden fall mal.

Mal gucken wie weit ich komme.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: TrackBar Zoomen in einer Paintbox

  Alt 19. Okt 2011, 10:13
Wie schon gesagt, Du kannst natürlich auch eine Vektorgrafik verwenden. Beispiel:
Delphi-Quellcode:
type
  TfrmMetaFileDemo = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormResize(Sender: TObject);
  private
    { Private-Deklarationen }
    FMetaFile: TMetaFile;
  public
    { Public-Deklarationen }
  end;

...

procedure TfrmMetaFileDemo.FormCreate(Sender: TObject);
var
  mcv: TMetaFileCanvas;
begin
  FMetaFile := TMetaFile.Create;
  FMetaFile.Width := ClientWidth;
  FMetaFile.Height := ClientHeight;
  mcv := TMetaFileCanvas.Create(FMetaFile, Canvas.Handle);
  try
    mcv.Pen.Style := psClear;
    mcv.Brush.Color := clRed;
    mcv.Ellipse(10, 10, 100, 100);
    mcv.Brush.Color := clBlue;
    mcv.FillRect(Rect(50, 50, 150, 150));
    mcv.Font.Name := 'Arial';
    mcv.Font.Size := 20;
    mcv.Brush.Style := bsClear;
    mcv.TextOut(20, 20, 'Hallo MetaFile');
  finally
    mcv.Free;
  end;
  DoubleBuffered := true;
end;

procedure TfrmMetaFileDemo.FormDestroy(Sender: TObject);
begin
  FMetaFile.Free;
end;

procedure TfrmMetaFileDemo.FormPaint(Sender: TObject);
begin
  Canvas.StretchDraw(ClientRect, FMetaFile);
end;

procedure TfrmMetaFileDemo.FormResize(Sender: TObject);
begin
  Invalidate;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Blubbel

Registriert seit: 6. Okt 2011
125 Beiträge
 
Delphi 2010 Professional
 
#18

AW: TrackBar Zoomen in einer Paintbox

  Alt 19. Okt 2011, 10:27
Alles klr danke dir! ich guck mal was ich da so machen kann
  Mit Zitat antworten Zitat
Blubbel

Registriert seit: 6. Okt 2011
125 Beiträge
 
Delphi 2010 Professional
 
#19

AW: TrackBar Zoomen in einer Paintbox

  Alt 21. Okt 2011, 10:39
mein Zoom funktioniert aber wenn ein Graph vorher gezeichnet wurde verschwindet er... was kann ich da machen? habe schon mal was vorbereitet...
Delphi-Quellcode:
procedure TForm1.RepaintFunction;
begin
  if btn_Zeichne.??? then
  begin

  end;

  if btn_Zeichne1.??? then
  begin

  end;
end;

Also mein Zoom Funktioniert so:
Delphi-Quellcode:
procedure TForm1.DrawGrid(ACanvas: TCanvas; AScaleFactor: Integer);
var
  lPoint: TPoint;
  lCount, lScale, i: Integer;
begin
  ACanvas.Brush.Style:= bsSolid;
  ACanvas.Brush.Color:= clWhite;
  ACanvas.FillRect(ACanvas.ClipRect);
                //X-Achse
  ACanvas.TextOut(0,0, RectToStr(ACanvas.ClipRect));
  ACanvas.MoveTo(0, GetHeight(ACanvas.ClipRect) div 2); //Graph
  ACanvas.LineTo(GetWidth(ACanvas.ClipRect), GetHeight(ACanvas.ClipRect) div 2);
  //Mittelpunkt ausrechnen
  lPoint:= GetCenter(ACanvas.ClipRect);
  //Scalierungswert festlegen

  //Mittelpunkt bis Rechts - X-Achse
  i:= lPoint.X;
  lCount:= 0;
  lScale:= AScaleFactor;

  while i < ACanvas.ClipRect.Right do
  begin
    inc(i,lScale);
    inc(lCount,1);

    DrawGridCaption(ACanvas, Point(i, lPoint.Y), 0, IntToStr(lCount));
  end;

  //Mittelpunkt bis Links der X-Achse
  i:= lPoint.X;
  lScale:= AScaleFactor;
  lCount:= 0;
  while i > ACanvas.ClipRect.Left do
  begin
    dec(i, lScale);
    dec(lCount, 1);

    DrawGridCaption(ACanvas, Point(i, lPoint.Y), 2, IntToStr(lCount));
  end;

  //Y-Achse Von Mittelpunkt nach unten
  lPoint:= GetCenter(ACanvas.Cliprect);
  lScale:= AScaleFactor;
  i:=lPoint.Y;
  lCount:= 0;
  while i < ACanvas.ClipRect.Bottom do
  begin
    inc(i, lScale);
    inc(lCount, -1);

    DrawGridCaption(ACanvas, Point(lPoint.X, i), 1, IntToStr(lCount));
  end;

  //Y-Achse von Mittelpunkt nach oben
  lPoint:= GetCenter(ACanvas.Cliprect);
  lScale:= AScaleFactor;
  i:=lPoint.Y;
  lCount:= 0;
  while i > ACanvas.ClipRect.Top do
  begin
    dec(i, lScale);
    dec(lCount, -1);

    DrawGridCaption(ACanvas, Point(lPoint.X, i), 3, IntToStr(lCount));
  end;
       //Y-Achse
  ACanvas.MoveTo(GetWidth(ACanvas.ClipRect) div 2, 0); //Graph
  ACanvas.LineTo(GetWidth(ACanvas.ClipRect) div 2, GetHeight(ACanvas.ClipRect));
end;


.....


  function GetScaleValue(APos: Integer): Integer;
  begin
    Result:= ((APos + 10) + 1) * 10;
  end;

Geändert von Blubbel (21. Okt 2011 um 10:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#20

AW: TrackBar Zoomen in einer Paintbox

  Alt 21. Okt 2011, 10:44
Wann zeichnest Du denn? Anscheinend nicht im OnPaint, das genau dafür gedacht ist.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 06:34 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