Saturday, March 14, 2020
Proportionally Resize an Image (TBitmap)
Proportionally Resize an Image (TBitmap) In graphics programming a thumbnail is a reduced-size version of a picture. Heres an idea for your next application: create a form picker to let users easily select and navigate through open forms by displaying thumbnails of them all in a dialog window. Interesting idea? Sounds like the Quick Tabs feature of the IE 7 browser :) Before actually creating such a neat feature for your next Delphi application, you need to know how to grab the image of the form (form-screen shot) and how to proportionally resize it to the desired thumbnail image. Proportional Picture Resizing: Creating Thumbnail Graphics Below you will find a block of code to take the image of a form (Form1) by using the GetFormImage method. The resulting TBitmap is then resized to fit the maximum thumbnail width (200 pixels) and/or height (150 pixels).Resizing maintains the aspect ratio of the image. The resulting image is then displayed in a TImage control, named Image1. const à à maxWidth 200; à à maxHeight 150; var à à thumbnail : TBitmap; à à thumbRect : TRect; begin à à thumbnail : Form1.GetFormImage; à à try à à à à thumbRect.Left : 0; à à à à thumbRect.Top : 0; à à à à //proportional resize à à à à if thumbnail.Width thumbnail.Height then à à à à begin à à à à à à thumbRect.Right : maxWidth; à à à à à à thumbRect.Bottom : (maxWidth * thumbnail.Height) div thumbnail.Width; à à à à end à à à à else à à à à begin à à à à à à thumbRect.Bottom : maxHeight; à à à à à à thumbRect.Right : (maxHeight * thumbnail.Width) div thumbnail.Height; à à à à end; à à à à thumbnail.Canvas.StretchDraw(thumbRect, thumbnail) ; //resize image à à à à thumbnail.Width : thumbRect.Right; à à à à thumbnail.Height : thumbRect.Bottom; à à à à //display in a TImage control à à à à Image1.Picture.Assign(thumbnail) ; à à finally à à à à thumbnail.Free; à à end; end; Note: The GetFormImage only copies the form client area - if you need to take the entire screen shot of a form (including its border) youll need a different approach ...more about it next time.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.