Форум: "Основная";
Текущий архив: 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