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

Вниз

Как быстрее всего получить 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
14-74416
Zhirnov Maxim
2003-10-04 21:58
2003.10.23
Постоянные перезагрузки при работе в Интернете


1-74244
MMF
2003-10-13 13:07
2003.10.23
переопределение событий ActiveDocument


14-74375
Johnny Smith
2003-10-03 09:39
2003.10.23
Шнобелю-шнобелево :)))))))))


1-74215
jazz
2003-10-09 18:32
2003.10.23
Запуск exe файла


3-74078
Alibaba
2003-09-29 17:30
2003.10.23
SQL