Avatar billede lanstorp Nybegynder
17. juli 2002 - 23:58 Der er 4 kommentarer og
2 løsninger

Gem Panel indh. som bitmap

Har en Panel komponent med en OpenGL scene. Er det ikke muligt at gemme dette indhold (Panel/gl scene) som et bitmap, evt. Form1 til bitmap eller WMF. Ganske som SaveToBitmapFile, der funkere på charts.
Avatar billede hermandsen Juniormester
18. juli 2002 - 00:07 #1
Du kunne eventuelt lave et PrintScreen af skærmen (se ScreenCapture på www.borrisholt.com), men jeg tror ikke det kan lade sig gøre med OpenGL... Så skal det i hvert fald være på en speciel måde...
Avatar billede nico26 Nybegynder
18. juli 2002 - 00:14 #2
prøv det her

var
  B : TBitmap;
begin
  B := TBitmap.Create;
  try
    B.Width := Panel1.Width;
    B.Height := Panel1.Height;

    Panel1.PaintTo(B.Canvas.Handle, 0, 0);
    B.SaveToFile("SomeName");
  finally
    B.Free;
  end;
end;
Avatar billede lanstorp Nybegynder
18. juli 2002 - 00:45 #3
nico22 >> Din code fanger fint Panel1, men desværre kommer OpenGL scenen ikke med. Men ved at mixe Borrisholts kode med din, kom der hul (kun hul - men natten er lang) på bylden. Skal du have point med Hermandsen, tryk ok
Avatar billede nico26 Nybegynder
18. juli 2002 - 00:49 #4
Kan du ikke gå ind i den metoder der tegner på Panelet, og så tegne på et bitmap i stedet?
Avatar billede hermandsen Juniormester
18. juli 2002 - 00:55 #5
>>nico22
Det er jo en masse OpenGL stas... Er ikker 100% sikker på hvordan det fungerer, men så vidt jeg ved, så er det ikke så lige til... :)
Avatar billede lanstorp Nybegynder
23. juli 2002 - 01:07 #6
FYI:

procedure SavePanelGLSceneToBitmap;
var
  Bitmap      :  TBitmap;
begin
  Bitmap := TBitmap.Create;
  try
    Bitmap.Width  := FormMain.PanelGLScene.Width;
    Bitmap.Height := FormMain.PanelGLScene.Height;
    Bitmap.PixelFormat := pf24bit;  // avoid palettes

    // Copy the Panel area from the Form into a separate Bitmap
    Bitmap.Canvas.CopyRect(Rect(0,0, Bitmap.Width,Bitmap.Height),
                    FormMain.Canvas,
                    Rect(FormMain.PanelGLScene.Left, FormMain.PanelGLScene.Top,
                    FormMain.PanelGLScene.Left + FormMain.PanelGLScene.Width-1,
                    FormMain.PanelGLScene.Top  + FormMain.PanelGLScene.Height-1) );


    Bitmap.SaveToFile(ExtractFilePath(Application.ExeName) + XPROGRAM + '.bmp');
  finally
    Bitmap.Free
  end;
end;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester