OpenGL

0

Jak zrobić zrzut obrazka z okna openglowego do pliku? Ja to robię tak :

var
zrzut : TCanvas;
bitmpa : TBitmap;
uchwyt : THandle;
begin
//ponizej uchwyt okna z tego samego programu, nie wiem jak go
//inaczej uzyskać
uchwyt := FindWindow(nil, 'Tytul okna');
zrzut := TCanvas.Create;
zrzut.Handle := GetWindowDC(uchwyt);
bitmapa := TBitmap.Create;
//rozmiary formy, której wygląd chcemy zrzucić do pliku
bitmapa.Width := form2.Width;
bitmapa.Height := form2.Height;
bitmapa.Canvas.CopyRect(Rect(0, 0, form2.Width, form2.Height), zrzut, Rect(0, 0, form2.Width, form2.Height));
bitmapa.SaveToFile('c:zrzut.bmp');
zrzut.free;
bitmapa.free
end;

ale mi zrzuca całe okno, razem z tym niebieskim na górze okna, co jest tytuł okna. Próbowałem też zrzucać każdy pixel z canvasa,
ale to za długo trwa.

Pytanie dodatkowe : Jak narysować krzywą linię w OpenGL?
Z góry dzięki za pomoc

0

Nie zaczynaj kopiować od punktu (0,0), tylko od początku obszaru klienckiego.

0

procedure initialize_screenshot;
begin
bmp := tbitmap.create;
c := tcanvas.create;
bmp.Width := panel1.width;
bmp.height := panel1.height;
c.Handle := GetDC(panel1.handle);
createdir('Screenshot');
screenshot_count := -1;
end;

// panel1 to nazwa formy gdzie sobie rysuję w OpenGL!
procedure write_screenshot;
begin
inc(screenshot_count);
//screenshot_count
bmp.Canvas.CopyRect(rect(0,0,bmp.width,bmp.height),c,rect(0,0,bmp.width,bmp.height));
if screenshot_count = 10) and (screenshot_count = 100) and (screenshot_count

0

OK, dzięki. A z tą krzywą linią to nikt nie wie?

0

Jedyną znaną mi możliwością jest podzielenie jej na n odcinków prostych. Powstanie wtedy łamana, którą łatwo narysować. Im więcej n tym łamana będzie bardziej podobna do pierwotnej krzywej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0