Форум: "Потрепаться";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Вниз
Друзья, как мне скопировать копию рабочего стола в буфер? Найти похожие ветки
← →
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 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.036 c