Форум: "Основная";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
Вниз
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c