AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia PaintBox in ScrollBox nach JPG

PaintBox in ScrollBox nach JPG

Ein Thema von cltom · begonnen am 7. Mär 2014 · letzter Beitrag vom 2. Mai 2014
Antwort Antwort
cltom

Registriert seit: 22. Sep 2005
230 Beiträge
 
Delphi 12 Athens
 
#1

AW: PaintBox in ScrollBox nach JPG

  Alt 7. Mär 2014, 11:41
Auweh, und ich war noch froh, dass das Ding funktioniert hat. Danke für die ausführliche Antwort.

Aber Du hast natürlich Recht, das war ein Gefrickel. Irgendwie bin ich immer dabei hängen geblieben, direkt auf die PaintBox zu zeichnen. Ich hab die Zeichenroutinen auf die TBitmap umgelenkt und siehe da, es klappt auch. Komisch, ich hab das immer vermieden, weil ich dachte, das würde mit den GDI+ Aufrufen nicht klappen. Geht aber anstandslos.

Fehlt noch das Kopieren der TBitmap in die TPaintBox. Das hier ist im OnPaint der PaintBox, das angezeigt Bild stimmt aber noch nicht (es ist verzerrt, offenbar wird die gesamte (große) Bitmap in den sichtbaren Bereich der PaintBox geschrieben. Und weil die Bitmap größer ist als der sichtbare Bereich der PaintBox kommt dabei ein Holler heraus.

Delphi-Quellcode:
  ClipRect := Rect(0,0,DestinationB.Width,DestinationB.Height);
  DestinationPB.Canvas.CopyRect(DestinationPB.Canvas.ClipRect, DestinationB.Canvas, DestinationB.Canvas.ClipRect);
DestinationB ist eine TBitMap
DestinationPB ist eine TPaintBox.
Die Größen der beiden sind gleich, aber irgendwas stimmt noch nicht ganz (oder, wahrscheinlicher: ich hab irgendwas noch nicht verstanden)

Falls jemand später über diesen Thread stolpert, stelle ich hier noch eine (hoffentlich) korrekt(ere) Lösung rein (wieder aus der DP selber):

Delphi-Quellcode:
procedure SaveBitmapAsJPG(Sender: TObject);
var
  jpg: TJpegImage;
begin
  with dlg_save do
  begin
    DefaultExt := '*.jpg';
    Filter := 'Jpg (*.jpg) | *.jpg';
    if Execute then
      begin
        jpg := TJpegImage.Create;
        Try
          jpg.Assign(myBitmap);
          jpg.SaveToFile(ChangeFileExt(dlg_save.FileName, '.jpg'));
        Finally
          jpg.Free;
        end;
      end;
  end;
end;

Geändert von cltom ( 7. Mär 2014 um 11:49 Uhr)
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
230 Beiträge
 
Delphi 12 Athens
 
#2

AW: PaintBox in ScrollBox nach JPG

  Alt 17. Mär 2014, 12:13
Also, hier noch die Antwort zu meiner eigenen Frage, nur für's Archiv, fall jemand über den Thread stolpert:

so sieht jetzt das OnPaint der PaintBox aus:

Delphi-Quellcode:
procedure Tfrm_main.pbx_mainPaint(Sender: TObject);
begin
// Größe der Bitmap setzen
  myDrawClass.SetSize(fDestinationPaintBox.Width,fDestinationPaintBox.Height);
//zeichnen
  myDrawClass.Draw;
// Bitmap nach Paintbox kopieren
  BitBlt(fDestinationPaintBox.Canvas.Handle, 0, 0, myDrawClass.Destination.Width, myDrawClass.Destination.Height, myDrawClass.Destination.Canvas.Handle, 0, 0, SRCCOPY);
end;
SetSize ruft seinerseits nur das SetSize der TBitmap auf.
  Mit Zitat antworten Zitat
richnessnotes

Registriert seit: 2. Mai 2014
1 Beiträge
 
#3

AW: PaintBox in ScrollBox nach JPG

  Alt 2. Mai 2014, 09:14
Thanks for sharing this thing about the PaintBox in a ScrollBox. I have read every detailed post. At first, I had no idea on how to do the procedure. It is good that I have learned something new here.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:02 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