pouzivam komponentu TImage pocas behu programu potrebujemviakrat menit jej velkost pricom pokial nedam na zaciatok menenia velkosti
image.Width:=46*50+100; -> pre prehladnost som dosadil cisla...
image.Canvas.Create;
teda pokial nevytvorim nove platno o maximalnej velkosti, ktoru mam dovolenu.. tak mi dovoli raz nastavit velkost obrazka a nasledne uz len mensie velkosti, pri opatovnej zmene na vacsiu velkost mi nezakresli casti grafov nachadzajucich sa mimo povodneho platna..
a este sa mi s tym viaze dalsi problem ked zmenim velkost okna pripadne nastavim panel kde je obrazok na visible:=false tak niektore casti formulara sa prefarbia na bielo... nepomohlo ani nastavenie farby formulara a nasledne zavolanie metody repaint...
dik za rady;)
delphi problem s image
-
oborpeto
Medium Expert
- Príspevky: 129
- Registrovaný: 21 jún 2006, 17:00
- Bydlisko: cadca
- Kontaktovať používateľa:
no neni to tajomstvo... resp. nie tato cast:)
vynosy:array [1..8,1..45] of real;
iVynosy: TImage;
procedure TForm1.kresli;
var i,posun:integer;
pocet_pix,hodnota:real;
od,kam:integer;
begin
//------------------------------Vynosy-obrazok---------------------
posun:=50;
iVynosy.Width:=46*posun+100;
iVynosy.Canvas.Create;
iVynosy.Width:=(seUkoncenie.Value-seZaciatok.Value+1)*posun+100;
iVynosy.Canvas.Brush.Color:=clwhite;
iVynosy.Canvas.Rectangle(-1,0,iVynosy.Width+1,iVynosy.Height+1);
iVynosy.Canvas.MoveTo(10,300);
iVynosy.Canvas.LineTo(iVynosy.Width-10,300);
iVynosy.Canvas.MoveTo(10,300);
iVynosy.Canvas.LineTo(10,10);
pocet_pix:=260/maxHodnota;
for i:=1 to seUkoncenie.Value-seZaciatok.Value+1 do
begin
Brush.Color:=clWhite;
iVynosy.Canvas.TextOut(i*posun,310,IntToStr(i+2005));
od:=300;
kam:=300;
with iVynosy.Canvas do
begin
if vynosy[7,i]<>0 then
begin
kam:=300-round(pocet_pix*vynosy[7,i]);
Brush.Color:=clBlue;
rectangle(i*posun,od,i*posun+20,kam);
end;
od:=kam;
kam:=od-round(pocet_pix*vynosy[1,i]*(1-seRezia.Value/100));
Brush.Color:=$000080FF;
rectangle(i*posun,od,i*posun+20,kam);
if vynosy[2,i]<>0 then
begin
od:=kam;
kam:=od-round(pocet_pix*vynosy[2,i]*(1-seRezia.Value/100));
Brush.Color:=clRed;
rectangle(i*posun,od,i*posun+20,kam);
end;
if vynosy[3,i]<>0 then
begin
od:=kam;
kam:=od-round(pocet_pix*vynosy[3,i]*(1-seRezia.Value/100));
Brush.Color:=clRed;
rectangle(i*posun,od,i*posun+20,kam);
end;
if vynosy[4,i]<>0 then
begin
od:=kam;
kam:=od-round(pocet_pix*vynosy[4,i]*(1-seRezia.Value/100));
Brush.Color:=clYellow;
rectangle(i*posun,od,i*posun+20,kam);
end;
if vynosy[5,i]<>0 then
begin
od:=kam;
kam:=od-round(pocet_pix*vynosy[5,i]*(1-seRezia.Value/100));
Brush.Color:=clGreen;
rectangle(i*posun,od,i*posun+20,kam);
end;
Brush.Color:=clWhite;
hodnota:=vynosy[6,i];
iVynosy.Canvas.TextOut(i*posun,kam-15,FloatToStr(hodnota));
end;
end;
end;
vynosy:array [1..8,1..45] of real;
iVynosy: TImage;
procedure TForm1.kresli;
var i,posun:integer;
pocet_pix,hodnota:real;
od,kam:integer;
begin
//------------------------------Vynosy-obrazok---------------------
posun:=50;
iVynosy.Width:=46*posun+100;
iVynosy.Canvas.Create;
iVynosy.Width:=(seUkoncenie.Value-seZaciatok.Value+1)*posun+100;
iVynosy.Canvas.Brush.Color:=clwhite;
iVynosy.Canvas.Rectangle(-1,0,iVynosy.Width+1,iVynosy.Height+1);
iVynosy.Canvas.MoveTo(10,300);
iVynosy.Canvas.LineTo(iVynosy.Width-10,300);
iVynosy.Canvas.MoveTo(10,300);
iVynosy.Canvas.LineTo(10,10);
pocet_pix:=260/maxHodnota;
for i:=1 to seUkoncenie.Value-seZaciatok.Value+1 do
begin
Brush.Color:=clWhite;
iVynosy.Canvas.TextOut(i*posun,310,IntToStr(i+2005));
od:=300;
kam:=300;
with iVynosy.Canvas do
begin
if vynosy[7,i]<>0 then
begin
kam:=300-round(pocet_pix*vynosy[7,i]);
Brush.Color:=clBlue;
rectangle(i*posun,od,i*posun+20,kam);
end;
od:=kam;
kam:=od-round(pocet_pix*vynosy[1,i]*(1-seRezia.Value/100));
Brush.Color:=$000080FF;
rectangle(i*posun,od,i*posun+20,kam);
if vynosy[2,i]<>0 then
begin
od:=kam;
kam:=od-round(pocet_pix*vynosy[2,i]*(1-seRezia.Value/100));
Brush.Color:=clRed;
rectangle(i*posun,od,i*posun+20,kam);
end;
if vynosy[3,i]<>0 then
begin
od:=kam;
kam:=od-round(pocet_pix*vynosy[3,i]*(1-seRezia.Value/100));
Brush.Color:=clRed;
rectangle(i*posun,od,i*posun+20,kam);
end;
if vynosy[4,i]<>0 then
begin
od:=kam;
kam:=od-round(pocet_pix*vynosy[4,i]*(1-seRezia.Value/100));
Brush.Color:=clYellow;
rectangle(i*posun,od,i*posun+20,kam);
end;
if vynosy[5,i]<>0 then
begin
od:=kam;
kam:=od-round(pocet_pix*vynosy[5,i]*(1-seRezia.Value/100));
Brush.Color:=clGreen;
rectangle(i*posun,od,i*posun+20,kam);
end;
Brush.Color:=clWhite;
hodnota:=vynosy[6,i];
iVynosy.Canvas.TextOut(i*posun,kam-15,FloatToStr(hodnota));
end;
end;
end;