Hallo Leute!
Mir ist kein richtiger Titel für mein Problem eingefallen.
Ich habe eine Listbox, in der Dateinamen stehen. Aus diesen Dateinamen sucht sich mein Programm zufällige Einträge und "kachelt" sie auf mein Bild. Soweit so gut, das klappt bis dahin auch, jedoch:
Ich habe einmal ein Image, um mir das Bild verkleinert anzuschauen und eine zweite Form, auf der Das Bild in Originalgröße dargestellt wird, wenn ich also mein Bild erstelle, dann werden die kacheln auf das verkleinerte Bild gezeichnet, wenn ich mir jedoch das BIld auf der Zweiten Form anschauen möchte, dann hagelt es AVs! Ich habe noch einen zweiten Algorythmus, bei dem die Bilder zufällig gesetzt werden, da klappts.
Hier der Source:
Delphi-Quellcode:
if (cobxType.Text = 'Kacheln') and (LbxSelectedPictures.Count > 0)
then
begin
helpBMP := TBitmap.Create;
// Das Hilfsbitmap
FBuffer.Width := SpedBildx.Value;
FBuffer.Height := round(SpedBildx.Value/4*3);
FBuffer.Canvas.Brush.Color := pBackground.Color;
FBuffer.Canvas.Rectangle(-1,-1,FBuffer.Width+1,FBuffer.Height+1);
try
for x := 0 to (FBuffer.Width div SpEdKachelnX.Value)+1 do
for y := 0 to (FBuffer.Height div SpEdKachelnY.Value)+1 do
begin
r := random(LbxSelectedPictures.Count); // Random Bild auswählen
helpBMP.LoadFromFile(LbxSelectedPictures.Items.Strings[r]); // und ins Bitmap laden
FBuffer.Canvas.StretchDraw // Es sollen Kacheln sein, also auf eine einheitliche größe damit
(bounds
(x*SpEdKachelnX.Value
,y*SpEdKachelnY.Value
,SpEdKachelnX.Value
,SpEdKachelnY.Value)
,HelpBMP);
end;
imSmallView.Canvas.StretchDraw(bounds(0,0,imSmallView.Width,imSmallView.Height),FBuffer);
// Ins Vorschaubild zeichnen
finally
helpBMP.Free;
end;
with FrmShowPicture.image1 do // Und hier das Bild in Originalgröße auf die Zweite Form
begin
width := FBuffer.Width;
height := FBuffer.Height;
Picture.Bitmap.Width := width;
Picture.Bitmap.Height := height;
Canvas.Draw(0,0,FBuffer);
end;
FrmShowPicture.ClientWidth := FrmShowPicture.image1.Width;
FrmShowPicture.ClientHeight := FrmShowPicture.image1.Height;
FrmShowPicture.ClientWidth := FrmShowPicture.image1.Width;
FrmShowPicture.ClientHeight := FrmShowPicture.image1.Height;
end;
// Wenn ich hier, FrmShowPicture.show aufrufe dann knallts
Hab keine Ahnung woran das liegen kann, bitte helft mir!
Gruß Richard
Edit1: Habe grade bemerkt, dass wenn ich das programm beende, nachdem ich das Bild generiert habe, dann kriege ich ein "EExternalError" aber nur manchmal... ich bin ratlos