Главная страница
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.032 c
3-74041
RDen
2003-10-02 12:40
2003.10.23
Select from Query


3-73974
Patrick
2003-10-01 14:16
2003.10.23
Использование IBQuery.


7-74500
avkiev
2003-08-01 17:02
2003.10.23
Дата создания директория


1-74201
Максим
2003-10-10 07:37
2003.10.23
MDI приложение


1-74154
stasys
2003-10-10 16:31
2003.10.23
Проблема с локализацией CLX MessageDlg.