Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];

Вниз

Как быстрее всего получить screenshort экрана.   Найти похожие ветки 

 
Magical   (2003-10-10 22:21) [0]

Как быстрее всего получить screenshort экрана.
А также как преобразовать картинку в 256 оттенков серого.
И как изменять степень сжатия-качества при приобразовании картинки в jpg.
Буду очень благодарен за любую помощь.


 
Zacho   (2003-10-10 22:25) [1]

Нажать Print Scrn. Я серьезно.


 
Magical   (2003-10-10 22:28) [2]

Я тоже серьезно. Спасибо конечно, но я имел ввиду программно, но естественно не нужно мне предлагать нажимать PrintScreen програмно.


 
Zacho   (2003-10-10 22:37) [3]

RTFM MS SDK. Например, GetDC и т.д и т.п. ...
А быстрее всего - именно так.


 
xorax   (2003-10-10 23:28) [4]

а если совсем лень юзай компоненты, ищи на торри


 
mike.dld   (2003-10-11 04:07) [5]


t_dc := GetDC(0);
BitBlt(dest_dc,0,0,screen.Width,screen.Height,t_dc,0,0,SRCCOPY);
ReleaseDC(t_dc);


Вот, и dest_dc - хэндл (почти) рисунка. Всякие там SelectObject на контекст битмапа я, естественно, не пишу.

Есть другой способ, попроще - создаёшь канву и вместо dest_dc пишешь <имя_канвы>.Handle. Должно работать.


 
Fenik   (2003-10-11 08:54) [6]

>А также как преобразовать картинку в 256 оттенков серого.

procedure GrayBmp(Bitmap: TBitmap);

function BLimit(A: Integer): Byte;
begin
if A < 0 then Result := 0
else if A > 255 then Result := 255
else Result := A;
end;

var n: Byte;
x, y: Integer;
Dest: pRGBTriple;

begin
Bitmap.PixelFormat := pf24Bit;
for y := 0 to Bitmap.Height - 1 do begin
Dest := Bitmap.ScanLine[y];
for x := 0 to Bitmap.Width - 1 do begin
with Dest^ do begin
n := BLimit(Round((rgbtBlue + rgbtGreen + rgbtRed)/3));
rgbtBlue := n;
rgbtGreen := n;
rgbtRed := n;
end;
Inc(Dest);
end;
end;
end;


>И как изменять степень сжатия-качества при приобразовании картинки в jpg.

TJPEGImage.Quolity - по-моему так пишется.


 
Amorph Lexx   (2003-10-11 12:37) [7]

2 Fenik
Только когда в отенки серого преобразуешь, компоненты RGB не с равными весами при усреднении идут, а с различными, каким, точно не помню, но это легко найти.


 
Magical   (2003-10-11 14:08) [8]

Большое спасибо. Вы мне очень помогли.


 
Anatoly Podgoretsky   (2003-10-11 14:37) [9]

I = 0.299R+0.587G+0.114B


 
AndHX   (2003-10-12 17:26) [10]


Procedure GetScreenShort(Var Bitmap: TBitMap);
Var
C : TCanvas;
R : TRect;
H : THandle;
begin
H := GetDC(0);
C := TCanvas.create;
C.Handle := H;
R := C.FlipRect;
Bitmap.CopyRect(R, C, R);
C.Free;
end;



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

Форум: "Основная";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.01 c
3-74004
alex25
2003-09-30 17:24
2003.10.23
Функция текущей даты


3-74014
Юлия
2003-10-03 21:55
2003.10.23
Поиск записей


1-74125
From_X
2003-10-10 17:12
2003.10.23
Web Browser Navigate Method return when Document is Complete


3-74093
Kinda
2003-09-30 22:31
2003.10.23
Поиск разрывов в цепи следования.


1-74319
X-Shadow
2003-10-11 21:39
2003.10.23
ActiveX и приложение





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский