- procedure TfHauptfenster.Screenshot1Click(Sender: TObject);
- type
- pFarbe = ^tFarbe;
- tFarbe = array[0..2] of Byte;
- var
- titel: string;
- x,y: Integer;
- daten: Pointer;
- farbe: tFarbe;
- zeiger: pFarbe;
- bild: TBitmap;
- jp_bild: tJPegImage;
- begin
- titel := caption;
- bild := TBitmap.Create;
- bild.Width := ClientWidth;
- bild.Height := ClientHeight;
- getMem(daten,clientwidth*clientheight*3);
- render(false);
- glReadPixels(0,0,clientWidth,ClientHeight,GL_RGB,GL_UNSIGNED_BYTE,Daten);
- zeiger := daten;
- for y := ClientHeight -1 downto 0 do
- begin
- for x := 0 to clientWidth -1 do
- begin
- farbe := pFarbe(zeiger)^;
- bild.Canvas.Pixels[x,y] := RGB(farbe[0],farbe[1],farbe[2]);
- inc(zeiger);
- end;
- caption := intToStr(round((100/clientWidth)*y))+'%';
- end;
- bild.Canvas.TextOut(10,10,intToStr(ClientWidth)+','+IntToStr(ClientHeight));
- jp_bild := TJpegImage.Create;
- jp_bild.Assign(bild);
- jp_bild.SaveToFile(extractFileDir(paramstr(0))+'\screen.jpg');
- jp_bild.Free;
- bild.Free;
- caption := titel;
- end;