Announcement

Collapse
No announcement yet.

timage skalieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • timage skalieren

    hi,

    ich lade bilder in timage. timage nimmt immer die größe vom bild an!<br>
    wie kann ich timage bzw. das bild skalieren.<br>
    eine eigenschaft scaleby hat timage nicht!<br>

    gruß<br>

    markus<br>
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

  • #2
    Hallo Markus,

    - Property Stretch der TImage-Komponente auf True setzen.

    - Mit Hilfe des Höhen-/Breitenverhältnisses Width- und Height-Property von TImage setzen. (Ansonsten wird das Bitmap verzerrt dargestellt.)

    Fertig.

    Gruss

    Ul

    Comment


    • #3
      ne, ich wollte eine skalierung wo ich ein prozentwert angeben kann!!
      stretch := true macht es ja wier er gerade bock hat!!!!!!!!

      mfg

      marku
      Herzliche Grüße

      Markus Lemcke
      barrierefreies Webdesign

      Comment


      • #4
        Hallo Markus,

        nein, Stretch := true macht nicht, was er will! Es ist Deine Aufgabe, auf die Seitenverhältnisse zu achten. Und mit den Prozentwerten ist es auch kein Problem: 100% ist eben Originalgröße, bei 50% setzt Du Image.Width und Image.Height auf 50% der Originalgröße des Bitmaps und so weiter. Wenn das Bild bei größeren Werten nicht auf den Monitor passt, setzt Du das TImage eben auf eine Scrollbox!

        Gruss

        Ul

        Comment


        • #5
          hi,

          wie kann ich die originalgroße des bildes herausfinden?

          mfg

          marku
          Herzliche Grüße

          Markus Lemcke
          barrierefreies Webdesign

          Comment


          • #6
            Hi Markus,

            mit TImage.Picture.Width und TImage.Picture.Height.

            Gruss

            Ul

            Comment


            • #7
              ahja danke!
              Herzliche Grüße

              Markus Lemcke
              barrierefreies Webdesign

              Comment


              • #8
                Hallo<p>

                Im folgende einige Routinen zum Scalieren von JPG.<br>
                Die Bitmaps muessen zwischengespeichert werden,<br>
                da strectchdraw nicht das Orginalbitmap veraendert.<br>
                Das ist wichtig, wenn du pixelweise das bild weiterbearbeiten willst.<br>
                <p>

                (*<br>
                Es wird im Programm auf keine visuellen Komponten zugegriffen.<br>
                Nur zu Darstellung werden die Image-Kompontenten verwendet.<br>
                *)<br>
                var<br>
                Form1: TForm1;<br>
                zoom_X,zoom_Y:Real;<br>
                ARect:TRect;<br>
                <br>
                JP_Load:TJPegImage; // JPG-Image zum Laden eines JPG-Bildes<br>
                BMP_ORG, // Original Bitmap<br>
                BMP_SCALE, // Skaliertes Bitmap<br>
                BMP_NEU:TBitmap; // Neues Bitmap<br>
                <br>
                implementation<br>
                <br>
                {$R *.DFM}<br>
                <br>
                //------------------------------------------------------------------------------<br>
                procedure TForm1.Laden_ToolButtonClick(Sender: TObject);<br>
                Var s:String;<br>
                begin<br>
                If OpenPictureDialog1.execute Then<br>
                Begin<br>
                s:=Uppercase(Copy(OpenPictureDialog1.FileName,Leng th(OpenPictureDialog1.FileName)-2,3));<br>
                If s='JPG' Then<br>
                Try<br>
                JP_Load:=TJpegImage.create;<br>
                BMP_ORG:=TBitmap.create;<br>
                Finally<br>
                JP_Load.loadfromfile(OpenPictureDialog1.FileName); <br>
                BMP_ORG.assign(JP_Load);<br>
                End<br>
                Else<br>
                Try<br>
                BMP_ORG:=TBitmap.create;<br>
                Finally<br>
                BMP_ORG.LoadFromFile(OpenPictureDialog1.FileName); <br>
                End;<br>
                <br>
                // Darstellung in Imagebox<br>
                Image_ORG.Picture.Assign(BMP_ORG);<br>
                Image_ORG.SetBounds(5,5,BMP_ORG.Width,BMP_ORG.Heig ht);<br>
                StatusBar1.Panels.Items[0].Text:='Org.: '+IntToStr(BMP_ORG.Width)+' x '<br>
                +IntToStr(BMP_ORG.Height);<br>
                // Zoom ....<br>
                Zoom_X:=1; ZoomX_TBar.Position:=Round(Zoom_X*100);<br>
                Zoom_Y:=1;ZoomY_TBar.Position:=Round(Zoom_Y*100);< br>
                StatusBar1.Panels.Items[3].Text:='Zoom X: '+IntToStr(ZoomX_TBar.Position)+' % Y: '<br>
                +IntToStr(ZoomY_TBar.Position)+' %';<br>
                End;<br>
                end;<br>
                <br>
                //------------------------------------------------------------------------------<br>
                <br>
                procedure TForm1.SCALE_ToolButtonClick(Sender: TObject);<br>
                // Graphik wird als Hilfsimage zum Skalieren verwendet<br>
                Var Graphik:TImage;<br>
                begin<br>
                Try<br>
                BMP_SCALE:=TBitmap.Create;<br>
                Graphik:=TImage.Create(Self);<br>
                Finally<br>
                arect:=Bounds (0,0,Round(BMP_ORG.Width*Zoom_X),Round(BMP_ORG.Hei ght*Zoom_Y));<br>
                Graphik.SetBounds(0,0,Round(BMP_ORG.Width*Zoom_X), Round(BMP_ORG.Height*Zoom_Y));<br>
                Graphik.Canvas.StretchDraw(aRect,BMP_ORG);<br>
                BMP_SCALE.assign(Graphik.Picture.Bitmap);<br>
                End;<br>
                StatusBar1.Panels.Items[1].Text:='Scale.: '+IntToStr(BMP_SCALE.Width)+' x '<br>
                +IntToStr(BMP_SCALE.Height);<br>
                // Darstellung in Imagebox<br>
                Image_SCALE.Picture.Assign(BMP_SCALE);<br>
                Image_SCALE.SetBounds(5,5,BMP_SCALE.Width,BMP_SCAL E.Height);<br>
                end;<br>
                <br>
                //------------------------------------------------------------------------------<br>
                <br>
                procedure TForm1.Save_ToolButtonClick(Sender: TObject);<br>
                begin<br>
                JP_Load.Assign(BMP_SCALE);<br>
                If SavePictureDialog1.execute Then<br>
                JP_Load.SaveToFile(SavePictureDialog1.FileName);<b r>
                end;<br>
                <br>
                //------------------------------------------------------------------------------<br&gt

                Comment

                Working...
                X