Главная страница
    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.011 c
14-74412
Mizon
2003-10-04 18:37
2003.10.23
Глюк в windows


14-74459
ghost_by
2003-10-02 11:41
2003.10.23
Защита программы


1-74138
Star
2003-10-11 02:23
2003.10.23
Господа, ответте на глупый вопрос...


8-74328
Александр Маленький
2003-06-21 14:24
2003.10.23
MP3


4-74528
AHTOXAA
2003-08-10 00:49
2003.10.23
Как реализовать команду NET SEND средствами WinApi. (win2k)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский