ich frage mich grade, warum du erst die differenz ausrechnest und dann diese zu der aktuellen größe hinzuaddierst...
warum nicht einfach
Delphi-Quellcode:
if image.width<>breite then
image.width:=breite;
if image.height<>hoehe then
image.height:=hoehe;
image.graphic wird
imho mit vergrößert, muss also nicht extra gemacht werden.
ich hab mal ne einfachere Version mit angehängt...was das Prinzip mal verdeutlicht und in bitBlt/stretchBlt einweist.
deine zeichenroutinen für die Noten musst du dann natürlich ins redraw reinhauen, bei Größenänderung LoadBGImage aufrufen, bei Notenänderung/erweiterung nur redraw.
wobei ich mich grade frage, warum du ein Hintergrundbild brauchst (wegen den linien?), was du relativ rechenintensiv strecken müsstest. die könntest auch malen
so in etwa:
Delphi-Quellcode:
for i:=1 to 5 do
begin
canvas.moveTo(0,i*10);
Canvas.LineTo(width,i*10);
end;
nicht viel Arbeit, oder?
//Edit
gut, man könnte das jetzt noch aufbohren und gleich mehrzeilig machen
(wollte das jetzt einfach mal ausprobieren).
Delphi-Quellcode:
var i,j,y:integer;
const Ytop=20; //Abstand von oben
YDiff=30; //abstand der zeilen
LCount=5; //5 linien pro zeile
LSpace=10; //Abstand der Linien in einer Zeile
RowCount=5; //5 zeilen
begin
for j:=0 to rowCount-1 do
begin
for i:=0 to LCount-1 do
begin
y:=Ytop+(j*YDiff)+(j*LCount*LSpace)+i*LSpace;
canvas.moveTo(0,y);
Canvas.LineTo(width,y);
end;
end;
end;
@extrem: klar, stimmt ja
aber ich kam noch nie auf die idee, das TGraphic-Objekt einer TImage-Kompo zu verändern
war irgendwie gedanklich beim canvas, was "mitwächst".
Gruß Frank