![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Подскажите пожалуйста, как можно снять скриншот с такого рода приложений? Используй станартные процедуры получаю "квадрат малевича"... Скриншоты нужно снимать с hl.exe
|
|
#2
|
|||
|
|||
|
Up.
Ну хоть кто-нибудь подскажите!!! |
|
#3
|
|||
|
|||
|
gr - объект, в канве которого я рисую с помощью OpenGL
bt := TBitmap.Create; with bt do begin Width := gr.Width; Height := gr.Height; Canvas.CopyRect(ClientRect, gr.Canvas, gr.ClientRect); SaveToFile('e:\bt.bmp'); Free; end; Можно ли еним снять картинки из игр? Если да, то что сдесь неверно? |
|
#4
|
|||
|
|||
|
deathor, а у меня этот ваш вариант работает без проблем. Только если я сохраняю картинку с помощью диалога, то на картинке оказываются отсеченными те части, которые заслонялись диалоговым окном. Если дело в этом, то попробуйте перед вызовом метода CopyRect насильно еще раз отрисовать всю сцену (и, возможно, придется вызвать после отрисовки Application.ProcessMessages). Тогда исчезают отсеченные куски картинки)).
Последний раз редактировалось Nyctos Kasignete, 30.03.2009 в 00:34. |
|
#5
|
|||
|
|||
|
В таком случае дай кусок программы, где ты его использовал... может что-нить не то творю..
|
|
#6
|
|||
|
|||
|
А что я могу вам дать? Процедура сохранения та же, что и у вас.
Код:
procedure TForm1.ImageSaver(const ImageFileName: TFileName);
var
FormBitmap: TBitmap;
begin
FormBitmap := TBitmap.Create;
FormBitmap.Width := ClientWidth;
FormBitmap.Height := ClientHeight;
RenderScene(); // вот здесь я перерисоваваю сцену.
Application.ProcessMessages;
FormBitmap.Canvas.CopyRect(Rect(0, 0, ClientWidth, ClientHeight),
Form1.Canvas,
Rect(0, 0, ClientWidth, ClientHeight));
FormBitmap.SaveToFile(ImageFileName);
FormBitmap.Free;
end;Код:
procedure RenderScene;
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glPushMatrix();
{тут чисто мои заморочки}
glTranslatef(Form1.xTr, Form1.yTr, Form1.zTr);
glRotatef(Form1.xRot, 1.0, 0.0, 0.0); glRotatef(Form1.yRot, 0.0, 1.0, 0.0);
glRotatef(Form1.zRot, 0.0, 0.0, 1.0);
{тут мои заморочки заканчиваются}
glCallList(List1); // это вызывается заранее откомпилированный лист
glPopMatrix();
SwapBuffers(Form1.DC);
end; |