Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.20;
Скачать: CL | DM;

Вниз

Как програмно сделать ПринтСкрин?   Найти похожие ветки 

 
Zonder2008   (2008-06-16 09:32) [0]

Как програмно сделать ПринтСкрин формы а еще лучше отдельных ее компонентов, скажем Мемо?


 
korneley ©   (2008-06-16 09:45) [1]

Form1.GetFormImage И делайте с этим битмапом, всё, что угодно. Програмно.


 
kivadim   (2008-06-16 10:07) [2]


Function WindowToBMP(WD: HWND ): TBitmap;
Var
WinDC: HDC;
ARect   : TRect;
begin
   Result := TBitmap.Create;             // Создаем рисунок, куда будем копировать
   GetWindowRect(WD, ARect);             // Узнаем размер
   with Result, ARect do
   begin
       Width := ARect.Right - ARect.Left;
       Height := ARect.Bottom - ARect.Top;
       If (Width=0) or (Height=0) then
       Begin
           MessageDlg("Размер области формы равен нулю",
           mtWarning,[mbOk],0);  // А вдруг у него нет размера ???
           Exit;       // Тогда выходим
       End;
       WinDC:=GetWindowDC(Wd);                // получаем для окна контекст устройства
       ShowWindow(Wd, SW_SHOW);               // на всякий случай выведем окно
       BringWindowToTop(WD);                  // и поместим поверх окон
       try
       // копируем оттуда прямоугольную область на канву
       // растрового изображения
           BitBlt( Canvas.Handle, 0, 0, Width, Height, WinDC,  0, 0, SRCCOPY);
       finally
       end;
   end;

end;


 
Zonder2008   (2008-06-16 10:23) [3]

kivadim   (16.06.08 10:07) [2]

А можете привести пример вызова вашей функции например для Memo1? Ато я не совсем понял - это дексриптор (WD: HWND ) ? Как узнать его?


 
korneley ©   (2008-06-16 10:25) [4]


> kivadim   (16.06.08 10:07) [2]
>  Result := TBitmap.Create;

Это сейчас считается хорошим тоном или просто, так сказать, невзирая на текст, скопипастили?


 
korneley ©   (2008-06-16 10:42) [5]


> Zonder2008   (16.06.08 10:23) [3]

Можно так, например:
bmp := WindowToBMP(memo1.Handle);
Удачи... Только не забудь потом объект, функцией созданный, удалить. "Каждый умирает той смертью, которую выбрал сам" (с) БГ


 
kivadim   (2008-06-16 14:28) [6]

>> korneley ©   (16.06.08 10:25) [4]

не понял в чем причина недовольства?


 
korneley ©   (2008-06-16 15:47) [7]


> kivadim   (16.06.08 14:28) [6]
> >> korneley ©   (16.06.08 10:25) [4]не понял в чем причина
> недовольства?

Причина:
 В разделе "Начинающим",  использовать создание объекта внутри функции, возвращающей ссылку на созданный внутри неё объект - воспитание камикадзе (имхо, естественно) Автор топика скопирует код, а потом будет жаловаться: "Куда память утекает?" Скопировать пример с "Мечты вуайериста - чужие окна" не сложно, сложно потом с такими "коллегами" работать.


 
kivadim   (2008-06-16 15:58) [8]

:) извини если что не так, просто помог человеку. мог бы просто ссылку кинуть на этот пример, но результат думаю был бы тот же.


 
{RASkov} ©   (2008-06-17 11:56) [9]

> [8] kivadim   (16.06.08 15:58)
> извини если что не так, просто помог человеку.

Подсунул ему грабли :)

> [7] korneley ©   (16.06.08 15:47)

[1] - ведь тоже самое :)

В прочем, это всего лишь грабли и просто не нужно на них наступать...


 
korneley ©   (2008-06-17 12:44) [10]


> {RASkov} ©   (17.06.08 11:56) [9]
> [1] - ведь тоже самое :)

Не совсем :) Выделение памяти, конечно, и там и там происходит "внутре", но первое - метод класса, во втором случае имеем функцию ни к какому классу не относящуюся. При "ненаступании" - без разницы, но в первом случае проще (как мне кажется) отнестись к методу, как к Create ;)



Страницы: 1 вся ветка

Текущий архив: 2008.07.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
15-1212412057
владимир
2008-06-02 17:07
2008.07.20
подскажите где можно скачать учебник по движку GLScene


2-1213799936
Антон
2008-06-18 18:38
2008.07.20
Составить алгоритм решения задачи (можно привести программу на Я


15-1212455954
brother
2008-06-03 05:19
2008.07.20
Мерцание 2х LCD мониторов (LG)


15-1212729969
PHoeNiX
2008-06-06 09:26
2008.07.20
описание процедур


15-1212052025
YurikGL
2008-05-29 13:07
2008.07.20
Нормативный документ с указанием "как именовать объекты"