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

Вниз

bmp   Найти похожие ветки 

 
delphin111   (2003-08-09 17:50) [0]

как уменьшить яркость картинки(bmp) при PixelFormat = pf8bit


 
Anatoly Podgoretsky ©   (2003-08-09 18:06) [1]

pf8bit это означает, что палитра и манипулировать придется ею. Возможно это окажется из области ИИ


 
Семен Сорокин ©   (2003-08-09 18:07) [2]

возможно проще, надо пробежаться по цветам палитры и уменьшить RGB-составляющие на нужное значение.


 
vidiv ©   (2003-08-10 13:24) [3]

Anatoly Podgoretsky © (09.08.03 18:06)

ИИ подскажет... без сомненья!

Это вопрос, я бы отнес к вопросу по лени!


 
Anatoly Podgoretsky ©   (2003-08-10 13:26) [4]

Абдула (McSimm) зарезал Петруху.


 
NAlexey ©   (2003-08-11 13:56) [5]

Может это поможет:


procedure TForm1.Button2Click(Sender: TObject);

type
PColors = ^TColors;
TColors = array[0..MaxInt - 1] of Byte;

var
BI: TBitmapInfo;
BW, BH: Integer;
DC, BDC, DrawDC: HDC;
B, BitmapHandle: HBITMAP;
Bm: TBitmap;

function GetColors(ABitmap: HBITMAP): PColors;
begin
with BI.bmiHeader do
begin
biSize := SizeOf(BI.bmiHeader);
biWidth := BW;
biHeight := -BH;
biPlanes := 1;
biBitCount := 32;
biCompression := BI_RGB;

GetMem(Result, 4 * BW * BH);
GetDIBits(DrawDC, ABitmap, 0, BH, Result, BI, DIB_RGB_COLORS);
end;
end;

procedure SetColors(ABitmap: HBITMAP; AColors: PColors);
begin
SetDIBits(DrawDC, ABitmap, 0, BH, AColors, BI, DIB_RGB_COLORS);
FreeMem(AColors);
end;

procedure Foo;
var
C: PColors;
I, J, K: Integer;

procedure Light(var AColor: Byte);
begin
Inc(AColor, MulDiv(255 - AColor, 3, 10));
end;

begin
C := GetColors(BitmapHandle);
try
for I := 0 to BW - 1 do
for J := 0 to BH - 1 do
begin
K := (J * BW + I) * 4;
Light(C^[K]);
Light(C^[K + 1]);
Light(C^[K + 2]);
end;
finally
SetColors(BitmapHandle, C);
end;
end;

begin
Bm := TBitmap.Create;
Bm.LoadFromFile("C:\Program Files\Common Files\Borland Shared\" +
"Images\Splash\256Color\HANDSHAK.BMP");

DrawDC := Form1.Canvas.Handle;
BW := Bm.Width;
BH := Bm.Height;

DC := CreateCompatibleDC(DrawDC);
B := CreateCompatibleBitmap(DrawDC, BW, BH);
B := SelectObject(DC, B);
try
BDC := CreateCompatibleDC(DrawDC);
BitmapHandle := CreateCompatibleBitmap(DrawDC, BW, BH);
try
SelectObject(BDC, BitmapHandle);
BitBlt(BDC, 0, 0, BW, BH, Bm.Canvas.Handle, 0, 0, SRCCOPY);
Foo;
BitBlt(DC, 0, 0, BW, BH, BDC, 0, 0, SRCCOPY);
finally
DeleteObject(BitmapHandle);
DeleteDC(BDC);
end;
BitBlt(DrawDC, 0, 0, BW, BH, DC, 0, 0, SRCCOPY);
finally
Bm.Free;
DeleteObject(SelectObject(DC, B));
DeleteDC(DC);
end;
end;



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

Текущий архив: 2003.08.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
7-81990
BJValentine
2003-06-10 19:17
2003.08.25
Событие от COM порта


1-81824
cjiohobaji
2003-08-13 13:19
2003.08.25
QReport


4-81994
Del
2003-06-21 23:43
2003.08.25
Как по хэндлу главного окна узнать ExeName?


1-81774
Andrew
2003-08-15 10:02
2003.08.25
Защита от копирования


14-81876
Study
2003-08-07 11:23
2003.08.25
Skins