Вниз
Скачать: CL | DM;

Друзья, как мне скопировать копию рабочего стола в буфер?   Найти похожие ветки 

← →
raymond ©   (2004-02-24 16:24) [0]

Друзья, как мне скопировать копию рабочего стола в буфер до появления своей формы? Я делаю, что-то вроде открытки девушке на 8 марта. Будет играть приятная музыка (например, Gregorian "Moments Of Peace"), а на "рабочем столе" будет текст поздравления плюс какие-нибудь симпатичные эффекты. Кстати, пожелания насчет эффектов принимаются.
Братья по разуму! Давайте подарим нашим дамам помимо цветов и открыток еще и продукты нашей, не побоюсь этого слова, интелектуальной деятельности


← →
Skier ©   (2004-02-24 16:32) [1]


>  Друзья, как мне скопировать копию рабочего стола в буфер?
>

press PrintScreen when ready...


← →
raymond ©   (2004-02-24 16:35) [2]

Skier ©   (24.02.04 16:32) [1]
Друг, ты меня не понял!


← →
Skier ©   (2004-02-24 16:37) [3]

BitBlt(...)


← →
Игорь Шевченко ©   (2004-02-24 16:54) [4]

Примерно так:
const
 DisplayDCName : WideString = "DISPLAY";
var
{ Эти переменные требуются для BitBlt }
 hdcWin : HDC;           // DC окна
 hdcScreen : HDC;        // DC полного экрана
 hdcScreenCompat : HDC ; // memory DC полного экрана
 hbmpCompat : HBITMAP;   // Содержимое экрана
 bmp : BITMAP;           // Структура для битмапа, куда помещается содержимое
                         // экрана
 fBlt : Boolean;         // TRUE if BitBlt occurred

procedure CaptureScreen (WindowHandle : HWND);
begin
     // Create a normal DC and a memory DC for the entire
     // screen. The normal DC provides a snapshot of the
     // screen contents. The memory DC keeps a copy of this
     // snapshot in the associated bitmap.
     hdcScreen := CreateDCW(PWideChar(DisplayDCName), nil, nil, nil);
     hdcScreenCompat := CreateCompatibleDC(hdcScreen);
     // Retrieve the metrics for the bitmap associated with the
     // regular device context.
     bmp.bmBitsPixel := Byte(GetDeviceCaps(hdcScreen, BITSPIXEL));
     bmp.bmPlanes := Byte(GetDeviceCaps(hdcScreen, PLANES));
     bmp.bmWidth := GetDeviceCaps(hdcScreen, HORZRES);
     bmp.bmHeight := GetDeviceCaps(hdcScreen, VERTRES);
     // The width must be byte-aligned.
     bmp.bmWidthBytes := ((bmp.bmWidth + 15) and (not 15)) div 8;
     // Create a bitmap for the compatible DC.
     hbmpCompat := CreateBitmap(bmp.bmWidth, bmp.bmHeight,
       bmp.bmPlanes, bmp.bmBitsPixel, nil);
     // Select the bitmap for the compatible DC.
     SelectObject(hdcScreenCompat, hbmpCompat);
     // Initialize the flags.
     fBlt := false;
 // Copy the contents of the current screen
 // into the compatible DC.
 BitBlt(hdcScreenCompat, 0, 0, bmp.bmWidth,
        bmp.bmHeight, hdcScreen, 0, 0, SRCCOPY);
 // Copy the compatible DC to the client area.
 hdcWin := GetDC(WindowHandle);
 BitBlt(hdcWin, 0, 0, bmp.bmWidth, bmp.bmHeight,
        hdcScreenCompat, 0, 0, SRCCOPY);
 ReleaseDC(WindowHandle, hdcWin);
 fBlt := true;
end;
 


Извиняюсь, кусок выдран из APIшной демки.


← →
raymond ©   (2004-02-25 08:38) [5]

>Skier и Игорь Шевченко
Огромное человеческое СПАСИБО!
Как скопировать рабочий стол до появления формы? Выполнить битблиттинг до комманды CreateForm?


← →
Zacho ©   (2004-02-25 08:41) [6]


>  Выполнить битблиттинг до комманды CreateForm?

Ты сам себе ответил :) Кто тебе мешает написать какой-либо код до CreateForm ?


← →
raymond ©   (2004-02-25 08:48) [7]

Zacho ©   (25.02.04 08:41) [6]

Ок! Не знаешь, сколько fps можно достичь перерисовывая экран 1024х768 средствами GUI? Под DirectX не программил, не хочется заморачиваться, т.к. времени осталось мало, а успеть нужно!


← →
Zacho ©   (2004-02-25 08:50) [8]

Не знаю.


← →
raymond ©   (2004-02-25 09:16) [9]

Из эффектов предлагаю скроллинг праздничного поздравления на рабочем столе, на фоне приятной музики.

Какие еще будут предложения?


← →
Skier ©   (2004-02-25 09:56) [10]

>raymond ©   (25.02.04 09:16) [9]
Лучше купи девушке хорошие духи и не парься...


← →
raymond ©   (2004-02-25 09:59) [11]

> Skier ©   (25.02.04 09:56) [10]

Подарки, цветы, поцелуйчики и так будут. Но хочется еще и так самовыразиться! Тем более, от меня уже ждут подобного шага, я не могу не оправдать надежды своих друзей и знакомых.


← →
Skier ©   (2004-02-25 10:01) [12]

>raymond ©   (25.02.04 09:59) [11]

> Но хочется еще и так самовыразиться!

Стихи напиши...


← →
raymond ©   (2004-02-25 15:56) [13]

> Skier ©   (25.02.04 10:01) [12]

Стихи в виде поздравления будут...
Ты бы мне бы советик бы дал бы какой эффектик прибамбасить бы!


← →
Иван Николаевич Понырев   (2004-02-25 16:20) [14]

плохие лучше не писать совсем


← →
Алхимик ©   (2004-02-25 17:46) [15]

Мессагу выводи - типа поздравление от Билли Гейтса и
открывай лоток CD с загодя заложеной денежкой :)


← →
DVM ©   (2004-02-25 17:50) [16]


> Ок! Не знаешь, сколько fps можно достичь перерисовывая экран
> 1024х768 средствами GUI?

Мало 5-15 от проца зависит. Загрузка проца будет 100%.


← →
raymond ©   (2004-02-26 11:26) [17]

> DVM ©   (25.02.04 17:50) [16]

Понятно... Буду перерисовывать часть экрана...
Как определить производительность процессора? Перед выполнением "основного цикла" прогнать какой-нить свой тестик? А потом использовать большие значения таймера для быстрых процов. Я правильно мыслю?


← →
raymond ©   (2004-02-27 09:41) [18]

> Игорь Шевченко ©   (24.02.04 16:54) [4]

Данный кусок кода:
// Copy the compatible DC to the client area.
hdcWin := GetDC(WindowHandle);
BitBlt(hdcWin, 0, 0, bmp.bmWidth, bmp.bmHeight,
       hdcScreenCompat, 0, 0, SRCCOPY);
ReleaseDC(WindowHandle, hdcWin);


нужно и в методе OnPaint окна указывать? Или я что-то не догоняю?


← →
raymond_   (2004-02-27 16:22) [19]

Уже скоро Восьмое марта! :)


← →
raymond ©   (2004-03-04 10:12) [20]

> Игорь Шевченко ©   (24.02.04 16:54) [4]

Проводил тут эксперименты над HDC и BITMAP... У меня такой вопрос, как мне вывести картинку из TBitmap"a в BITMAP? Задача усложняется тем, что нужно использовать один цвет в качестве прозрачного.
Я понимаю, что можно все сделать, а есть ли универсальный, простой метод?



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

Скачать: CL | DM;



Память: 0.5 MB
Время: 0.024 c
3-1075444031
KADAN
2004-01-30 09:27
2004.03.28
Изменение размеров NUMERIC


6-1073855568
Sir Alex
2004-01-12 00:12
2004.03.28
Утечка памяти и ресурсов (HTMLViewer) в W98


14-1077462436
vajo
2004-02-22 18:07
2004.03.28
AVI файлы


14-1077646685
Gero
2004-02-24 21:18
2004.03.28
Вечный вопрос: Выбор ОС (Навеяно очередным BSOD ом)


1-1078558516
YurikGl
2004-03-06 10:35
2004.03.28
qtintf70.dll




   Наверх