Доброго времени. Подскажите, как изменить цвет панели в компоненте TFire, в свойствах инспектора объектов что-то нет, и смотрел исходник, что-то не могу найти. Посмотрите пожалуйста, и подскажите, где там редактировать , чтоб заметить основной цвет этой панели
Код:
procedure TFire.CreateBitmap;
var y,x:Integer;pRow:PByteArray;lpbi:pBITMAPINFO;
uUsage:Uint;
begin
if (m_Fire <> nil) then
begin
FreeMem(m_Fire);
m_Fire := nil;
end;
m_MaxBurn := Trunc(Height * (N_Max/100));
if m_Bitmap<>0 then
begin
DeleteObject(m_Bitmap);
m_Bitmap:=0;
end;
if m_Feel<>0 then
begin
DeleteObject(m_Feel);
m_Feel:=0;
end;
m_nSize := Round(Width *FEdgeRatio);
GetMem(m_Fire,Width);
getMem(lpbi,sizeof(TBITMAPINFOHEADER) + (256 * sizeof(TRGBQUAD)));
lpbi.bmiHeader.biSize := sizeof(TBITMAPINFOHEADER);
lpbi.bmiHeader.biWidth := Width;
lpbi.bmiHeader.biHeight := Height;
lpbi.bmiHeader.biPlanes := 1;
lpbi.bmiHeader.biBitCount := 8;
lpbi.bmiHeader.biCompression := BI_RGB;
lpbi.bmiHeader.biSizeImage := WIDTHBYTES(Width*8) * Height;
lpbi.bmiHeader.biXPelsPerMeter := 0;
lpbi.bmiHeader.biYPelsPerMeter := 0;
lpbi.bmiHeader.biClrUsed := 0;
lpbi.bmiHeader.biClrImportant := 0;
uUsage := DIB_RGB_COLORS;
move( pal,lpbi.bmiColors, sizeof(TRGBQUAD) * 256 );
m_pWinDC :=Canvas.Handle;
m_Bitmap := CreateDIBSection( m_pWinDC, lpbi^, uUsage, Pointer(m_pBits), 0, 0 );
m_feel := CreateDIBSection( m_pWinDC, lpbi^, uUsage, Pointer(m_Show), 0, 0 );
FreeMem(lpbi);
if m_Bitmap = 0 then Abort;
for y := 0 to Height-1 do
begin
pRow := PByteArray(Integer(m_pBits)+WIDTHBYTES(Width * 8)* y);
for x := 0 to Width-1 do
begin
pRow[x]:= 16;
end;
end;
for y := 0 to Height-1 do
begin
pRow := PByteArray(Integer(m_Show)+WIDTHBYTES(Width * 8)* y);
for x := 0 to Width-1 do
begin
pRow[x]:= 16;
end;
end;
m_pMemDC:=CreateCompatibleDC(m_pWinDC);
m_pOldPalette := SelectPalette(m_pWinDC, m_Palette, FALSE );
RealizePalette( m_pWinDC);
m_pOldBitmap := SelectObject(m_pMemDC, m_Feel );
for x := 0 to width-1 do m_Fire[x]:= 16;
end;
procedure TFire.BurnPoint( pRow,pNextRow:PByte);
var Off,val:Integer;
pTarget:PByte;
begin
off := Rand mod (m_nDistribution +1);
val := m_nDecay + 1;
val := Rand Mod val;
val := pNextRow^ - val;
if (Rand mod 2)=1 then
begin
pTarget := pRow;
Inc(pTarget, off);
end
else
begin
pTarget := pRow;
Dec(pTarget, off);
end;
if (val > 16)then
pTarget^ := val
else
pTarget^ := 16;
end;
procedure TFire.RenderFlame;
var pRow, pNextRow:PByteArray;
xStart, xEnd, x, y,MaxHeat ,off,val:Integer;
begin
xStart :=(Width - m_nSize) div 2;
xEnd := xStart + m_nSize + 1;
pRow := m_pBits;
for x:=0 to Width-1 do
begin
if (x < (xStart + m_nDistribution)) or( x >= (xEnd - m_nDistribution))then
m_Fire[x] := 16;
pRow[x]:= m_Fire[x];
end;
pRow:=PByteArray(Integer(pRow)+WIDTHBYTES(Width * 8) * (m_MaxBurn+1));
pNextRow:=PByteArray(Integer(m_pBits)+WIDTHBYTES(Width * 8) * (m_MaxBurn));
for y := m_MaxBurn downto 1 do
begin
pRow:=PByteArray(Integer(pRow)-WIDTHBYTES(Width * 8) );
pNextRow:=PByteArray(Integer(pNextRow)-WIDTHBYTES(Width * 8) );
if (Rand mod 2) = 0 then
begin
for x := 0 to Width-1 do
begin
try
BurnPoint(@pRow[x], @pNextRow[x]);
except
end;
end;
end
else
begin
for x := Width-1 downto 0 do
begin
BurnPoint(@pRow[x], @pNextRow[x]);
end;
end;
end;
MaxHeat := m_nMaxHeat + 16;
if (rand mod(400 - m_nFlammability)) = 0 then
begin
off := m_nSize - 5;
off := rand mod off;
off := Off+xStart;
for x := off to off + 4 do
m_Fire[x] := 239;
end;
for x := xStart to xEnd-1 do
begin
if (Ord(m_Fire[x]) < MaxHeat) then
begin
val := rand mod m_nChaos+1;
val :=val- m_nChaos div 2;
val :=val+ m_nSpreadRate;
val :=val+ m_Fire[x];
if ( val > MaxHeat) then
m_Fire[x] := MaxHeat
else if ( val < 16) then
m_Fire[x] := 16
else
m_Fire[x] := val;
end
else
m_Fire[x] := MaxHeat;
end;
if (m_nSmoothness > 0)then
begin
xStart :=xStart+ m_nSmoothness;
xEnd :=xEnd- m_nSmoothness;
for x := xStart to xEnd-1 do
begin
val := 0;
for y := x - m_nSmoothness to x + m_nSmoothness do
val :=val+ m_Fire[y];
m_Fire[x] := val div (2*m_nSmoothness+1);
end
end;
end;