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

Вниз

bmp(24bit) -> gif(4bit) (+)   Найти похожие ветки 

 
Eugeny (r66) ©   (2003-02-05 10:43) [0]

...или как рисовать в bmp (4bit) с моими цветами (RGBs)

...необходимо сделать картинку - отчет с графиками для отправки эл.почтой...


 
MBo ©   (2003-02-05 12:25) [1]

нужно создать 16-цветную палитру с нужными цветами


 
Eugeny (r66) ©   (2003-02-05 12:38) [2]

Может я чего неправильно делаю?

Вырезка из кода:


const
g_ColorsCount : Integer = 15;

Type
spal : Record
lpal : logPalette;
dumm : array[0..15] of TColor;
End;

Var
gColors : Array[0..g_ColorsCount] of TColor; {Заполняется из фала}
bmp : TBitMap;
gif : TGifImage;

Procedure PaletteCreate;
Var
c : Integer;
sh : String;
Begin
spal.lpal.palVersion := $300;
spal.lpal.palNumEntries := 15;
For c := 0 to g_ColorsCount do
Begin
sh := IntToHex(GColors[2],8);
spal.lpal.palPalEntry[c].peFlags := StrToInt("$"+sh[1]+sh[2]);
spal.lpal.palPalEntry[c].peBlue := StrToInt("$"+sh[3]+sh[4]);
spal.lpal.palPalEntry[c].peGreen := StrToInt("$"+sh[5]+sh[6]);
spal.lpal.palPalEntry[c].peRed := StrToInt("$"+sh[7]+sh[8]);
End;
End;

Procedure TFGraphTable.DrowHeader;
Begin
bmp.Canvas.Brush.Color := GColors[g_clPaper];
// bmp.Canvas.Brush.Color := g_clPaper;
bmp.Width := 800;
bmp.Height := rh;
bmp.Canvas.Brush.Color := GColors[g_clCaption];
// bmp.Canvas.Brush.Color := g_clCaption;
SetBkMode(bmp.Canvas.Handle,TRANSPARENT);
bmp.Canvas.Font.Color := GColors[g_clText];
// bmp.Canvas.Font.Color := g_clText;
//№ п/п
bmp.Canvas.FillRect(Rect(1,1,39,rh));
bmp.Canvas.TextOut(Trunc((40-1)/2)-Trunc(bmp.Canvas.TextWidth("№ п/п")/2),Trunc((rh-1)/2)-Trunc(bmp.Canvas.TextHeight("№ п/п")/2),"№ п/п");
//=== Вырезано (аналогичные операции)
End;

Function CreatePic:Boolean;
Begin
bmp := TBitMap.Create;
bmp.PixelFormat := pf4bit;
Self.PaletteCreate;
bmp.PaletteModified := True;
FSplash.Show;
DrowHeader;
bmp.SaveToFile("sp.bmp");
bmp.Free;
Result := True;
FSplash.Hide;
FSplash.Free;
End;


 
MBo ©   (2003-02-05 13:20) [3]

В твоем коде сразу не разберусь


procedure TForm1.Button1Click(Sender: TObject);
var b:TBitmap;
i:integer;
Colors16:array[0..15] of TRGBQuad;
BmpBits:array[0..32767] of byte;

function RGBQToCol(q:TRGBQuad):TColor;
begin
Result:=(Cardinal(q) and $ff00) or (Cardinal(q) and $ff shl 16) or
(Cardinal(q) and $ff0000 shr 16);
end;

begin
b:=TBitmap.Create;
b.width:=256;
b.height:=256;
b.PixelFormat:=pf4bit;
for i:=0 to 15 do
with Colors16[i] do begin
rgbRed:=16*i;
rgbGreen:=0;
rgbBlue:=0;
rgbReserved:=0;
end;
SetDIBColorTable(b.canvas.Handle,0,$10,Colors16);
for i:=0 to 15 do begin
b.Canvas.Brush.Color:=RGBQToCol(Colors16[i]);
b.canvas.rectangle(0,i shl 4,b.width,(i+1) shl 4);
end;
Canvas.Draw(10,10,b);


for i:=0 to 32767 do
BmpBits[i]:=((i shr 11) shl 4) or (i shr 11);
SetBitmapBits(b.Handle, sizeof(BmpBits),@BmpBits);
Canvas.Draw(310,10,b);
b.free;
end;



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

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

Наверх




Память: 0.47 MB
Время: 0.012 c
3-46665
denary
2003-04-23 01:31
2003.05.15
Открыть таблицу в эксклюзивном режиме


1-46719
Zirus
2003-05-04 18:14
2003.05.15
завершение onmousemove


14-46961
NetBreaker666
2003-04-26 23:07
2003.05.15
Да, и есть здесь хоть кто-нибудь, кто когда-нибудь


14-46965
NetBreaker666
2003-04-24 20:21
2003.05.15
Обработка исключений


14-46971
Delirium^.Tremens
2003-04-25 09:29
2003.05.15
Возвращение DT