AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung FMX: Image->Bitmap wird abgeschnitten
Thema durchsuchen
Ansicht
Themen-Optionen

FMX: Image->Bitmap wird abgeschnitten

Ein Thema von nikosophi · begonnen am 2. Okt 2016 · letzter Beitrag vom 3. Okt 2016
 
nikosophi

Registriert seit: 8. Mai 2013
Ort: Weilerswist
47 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: FMX: Image->Bitmap wird abgeschnitten

  Alt 3. Okt 2016, 10:24
Danke Harry!

Hab ich jetzt verstanden. Aber wohl doch nicht ganz.

Das Zeichnen eines Rahmens und einer Diagonale sollte doch dann auch in dem Bitmap Ausmassen erfolgen, oder?
Ich habe die Ausmasse des Image der Einfachheit halber im Create auf die der geladenen Bitmap gesetzt.

Delphi-Quellcode:
procedure TForm5.FormCreate(Sender: TObject);
begin
  // Das Original Bild in der Original Größe laden und darstellen
  Image1.align := TAlignLayout.None;
  Image1.wrapmode := TImageWrapMode.Original;
  Image1.Bitmap.LoadFromFile('c:\temp\bildOriginal.png');
  Image1.width := Image1.bitmap.width;
  Image1.height := Image1.bitmap.height;
end;

procedure TForm5.Button1Click(Sender: TObject);
var
  MyBitmap: TBitmap;
  rectFrame: TRectF;
  pkt1, pkt2: TPointF;
begin
  MyBitmap := TBitmap.Create(round(image1.bitmap.Width), round(image1.bitmap.height));

  pkt1 := PointF(10.0, 10.0);
  pkt2 := PointF(Image1.bitmap.width-20 , image1.bitmap.height-20);

  // Die Bitmap des Original Bildes in ein Bitmap übernehmen
  MyBitmap.Assign(Image1.Bitmap);
  // und Rahmen und Diagonale drübermalen
  if MyBitmap.Canvas.BeginScene then begin
    MyBitmap.Canvas.Stroke.Kind := TBrushKind.Solid;
    MyBitmap.Canvas.Stroke.Color := TAlphaColorRec.Coral;
    MyBitmap.Canvas.StrokeThickness := 4;
    rectFrame.TopLeft := pkt1;
    rectFrame.BottomRight := pkt2;
    MyBitmap.Canvas.DrawRect(RectFrame, 20, 20, AllCorners, 1.0);
    MyBitmap.Canvas.DrawLine(pkt1,pkt2, 1.0);
    MyBitmap.Canvas.EndScene;
  end;
  // Ergebnis speichern
  MyBitmap.SaveToFile('c:\temp\BildErgebnis.png');
      mmo.lines.add('Image1.bitmap.width: '+ FloatToStr(Image1.bitmap.width));
      mmo.lines.add('Image1.bitmap.Height: '+ FloatToStr(Image1.bitmap.height));
      mmo.lines.add('MyBitmap.width: '+ IntToStr(MyBitmap.width));
      mmo.lines.add('MyBitmap.Height: '+ IntToStr(MyBitmap.height));
      mmo.lines.add('MyBitmap.canvas.width: '+ IntToStr(MyBitmap.canvas.width));
      mmo.lines.add('MyBitmap.canvas.Height:'+ IntToStr(MyBitmap.canvas.height));
  MyBitmap.Free;

end;
Delphi-Quellcode:
Image1.bitmap.width: 1000
Image1.bitmap.Height: 667
MyBitmap.width: 1000
MyBitmap.Height: 667
MyBitmap.canvas.width: 1000
MyBitmap.canvas.Height:667
Also die Höhe und breite scheint ja jetzt zu passen, aber das Zeichnen DrawRect und DrawLine scheinen noch einen anderen Masstab zu haben.

In den angehängten Bildern sieht man in grün den Originalrahmen, mit Paint gezeichnet.
Im Ergebnis ist der orange Rahmen ( aus DrawRect ) zu groß.

Müssen da noch irgendewelche Pixelformate oder Skalierungen angepasst werden?
Angehängte Grafiken
Dateityp: png BildOriginal.png (6,9 KB, 5x aufgerufen)
Dateityp: png BildErgebnis.png (23,2 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat
 

 

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 10:50 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