Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Zeichnen und beim Anschauen Fehler (https://www.delphipraxis.net/82699-zeichnen-und-beim-anschauen-fehler.html)

Tormentor32 18. Dez 2006 14:31


Zeichnen und beim Anschauen Fehler
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz