Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Formgröße anpassen ... funktioniert nicht richtig (https://www.delphipraxis.net/186319-formgroesse-anpassen-funktioniert-nicht-richtig.html)

JanWe 24. Aug 2015 09:34

Delphi-Version: 5

Formgröße anpassen ... funktioniert nicht richtig
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo, guten Morgen :)

ich hab vor, die tatsächliche Bildbreite aus dem geladenen Picture auszulesen und die Formgröße (Form2.width) daran anzupassen.

Funktioniert wohl auch, wenn das Bild kleiner ist, als die Form.
(bild.jpg)

Dumm nur, wenn das geladene JPEG aber 3000 px Breite hat.
(bild_gross.jpg)

Dann wird der Wert nicht mehr zugewiesen.
Sondern irgendein anderer.


Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var wd, lf : Integer;
begin
{// unwichtig, aber in der Originalunit enthalten.
  form2.image1.Top := 0 ;
    form2.image1.Left := 0 ;

  form2.Shape1.Shape := stEllipse;
    form2.Shape1.Shape := stRectangle;
  form2.Shape1.Brush.Color := clLime;
  form2.image1.picture.Assign(form1.Image1.picture);

  form2.image1.Width := form2.image1.Picture.Width;
  form2.image1.Height := form2.image1.Picture.Height;
}
  wd := form2.image1.Picture.Width;  // WD erhhält den korrekten Wert
  form2.Width := wd;
  if form2.Width <> form2.image1.Picture.Width then
caption := 'zu klein !!!!!!!!!!!'; // 1616 statt 3800
  form2.Height := form2.image1.Picture.Height;
  caption := inttostr(form2.Width);
end;
Ich hoffe, Ihr schimpft nicht allzusehr.

Wäre aber nett, wenn Ihr mir eine Lösung verraten könntet.
Ich hoffe, da gibt's was.
Danke. :)

Sir Rufo 24. Aug 2015 09:44

AW: Formgröße anpassen ... funktioniert nicht richtig
 
Wie soll denn der Anwender auf einem Monitor mit 1600 Pixeln Breite das Bild in so einer 3800 Pixel grossen Form ansehen?

Ist ja ein wenig umständlich. Da wäre eine ScrollBox doch wesentlich handlicher.

JanWe 24. Aug 2015 09:59

AW: Formgröße anpassen ... funktioniert nicht richtig
 
stimmt.
aber eigentlich nicht unmöglich.

Ich erinnere mich an einige Free/Sharewareprogramme, die 2005 schon für 1600*y programmiert wurden, und die auf meinem 800x600 .. (oder hatte ich da schon 1024x800?) egal - ich mußte um an die am unteren Rand angeordneten Bedienelemente die Form ganz nach oben aus dem Bildschirmrand schieben ... mm-Weise mehrmals klickend.
und dann bleib mir nur Maximieren mit einem Doppelklick auf den oberen 1px Windows-Fensterrand.

Darum dachte ich, das dürfte doch auch möglich sein, ner Form eine größere Größe zu geben.

Mhh, ja, ich seh schon,
ich muß "rausrücken", mit dem, was ich eigentlich möchte:

Ich hatte mir so einfach gedacht, man könne nen Screenshot von ner Form machen und die darauf platzierten Shapes gleich mit auf dem image "Delphi intern abfotografieren" und dann als Bilddatei Form2.image1.picture.SaveToFile('bla.bmp') abspeichern.
Also quasi die Shapes auf das Bild kleben und alles ("Screenshot der ganzen Form") speichern.

Wenn das anders einfacher ginge bräuchte ich natürlich natürlich nicht die Größenänderung der Form.

Wie mr da jetzt Scrollbox helfen könnte - hab ich keinen PLan. So gut kann ich leider noch kein Delphi. :(



Delphi-Quellcode:
var
  FormImage: TBitmap;
begin
//FormImage := Tbitmap.create;
  FormImage := GetFormImage;
try
  ClipBoard.Assign(form2.GetFormImage);
  Image3.Picture.Assign(Clipboard);
finally
  FormImage.Free;
end;

Perlsau 24. Aug 2015 15:19

AW: Formgröße anpassen ... funktioniert nicht richtig
 
Zitat:

Zitat von JanWe (Beitrag 1313206)
Wie mr da jetzt Scrollbox helfen könnte - hab ich keinen PLan. So gut kann ich leider noch kein Delphi. :(

Eine Scrollbox dient dazu, Komponenten, die so groß sind, daß sie nicht auf den Bildschirm oder die Form passen, dennoch anzeigen zu können, und zwar indem man an die jeweils gewünschte Position scrollt. Du nimmst eine Scrollbox, legst dort ein TImage rein, positionierst es links oben und stellst es auf AutoSize. Wird dort nun ein Bild reingeladen, das größer ist als der Clientbereich der Scrollbox, erscheinen in letztgenannter die Scrollbalken und du kannst das Bild scrollen.

JanWe 24. Aug 2015 20:43

AW: Formgröße anpassen ... funktioniert nicht richtig
 
Liste der Anhänge anzeigen (Anzahl: 3)
Danke Euch beiden.
Mhh, ja ich hab mich da nun reingelesen ... in die Scrollbox.
Das Schieben der Regler funktioniert nun auch.

Allerdings bringt das gar keinen Effekt, wenn ich ein Foto der Form mache. Es wird nur ein Teil des form2.image aufgenommen. Genau wie zuvor.

Was wäre, wenn ich nun wie ursprünglich ein Shape im Quadranten rechts unten auf dem image (100%) platzieren möchte? [s. angehängtes Wunschbild]
OK, ich könnte es zuvor "stretchen". Allerdings würde dann auch die Auflösung vom Image auf die der Form reduziert und entspräche ja nicht mehr der Originalauflösung.

Aber ich möchte das Image in Vollgröße darstellen und abfotografieren oder irgendwie die Shapes mit dem Bild kombinieren und als BMP wieder abspeichern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 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