RAD Studio VCL Reference
ContentsIndex
PreviousUpNext
TCanvas.StretchDraw Method

Draws the graphic specified by the Graphic parameter in the rectangle specified by the Rect parameter.

Pascal
procedure StretchDraw(const Rect: TRect; Graphic: TGraphic);
C++
__fastcall StretchDraw(const TRect Rect, TGraphic Graphic);

Call StretchDraw to draw a graphic on the canvas so that the image fits in the specified rectangle. StretchDraw calls the Draw method of the graphic. The graphic object determines how to fit into the rectangle. This may involve changing magnification and/or aspect ratio. 

To render the graphic in its natural size, use the Draw method, instead. 

If the graphic is a TBitmap object, the bitmap is rendered using the value of CopyMode.

Note: If the graphic is an icon, it is not stretched.
 

C++ Examples: 

 

/*
The following example is taken from the custom draw demo. It
shows how the OnCustomDraw event handler draws the
background for the tree view before the items and lines are
drawn.
*/
void __fastcall TCustomDrawForm::TVCustomDraw(TCustomTreeView *Sender,
      const TRect &ARect, bool &DefaultDraw)
{
/*
This event should be used to draw any background colors or 
images.  ARect represents the entire client area of the TreeView.
Use the TreeView's canvas to do the drawing.
Note that drawing a background bitmap is not really 
supported by CustomDraw, so scrolling can get messy. Best to
subclass the TreeView and handle scrolling messages.
*/
  if (None1 != NULL)
  {
    if (None1->Checked) //no picture
    {
      TV->Canvas->Brush->Color = BkgColorDialog->Color;
      TV->Canvas->Brush->Style = FBrushStyle;
      TV->Canvas->FillRect(ARect);
    }
    else if (Tile1->Checked) //tile bitmap
    {
      TV->Canvas->Brush->Bitmap = Image1->Picture->Bitmap;
      TV->Canvas->FillRect(ARect);
    }
    else //Stretch across the canvas.
      TV->Canvas->StretchDraw(ARect, Image1->Picture->Bitmap);
  };
  DefaultDraw = FDefaultDraw;
  // Setting DefaultDraw to false here prevents all calls to
  // OnCustomDrawItem.
}

 

Delphi Examples: 

{
The following example is taken from the custom draw demo. It
shows how the OnCustomDraw event handler draws the
background for the tree view before the items and lines are
drawn.
}
procedure TCustomDrawForm.TVCustomDraw(Sender: TCustomTreeView; const ARect: TRect;
  var DefaultDraw: Boolean);
begin
{
This event should be used to draw any background colors or 
images.  ARect represents the entire client area of the TreeView.
Use the TreeView's canvas to do the drawing.
Note that drawing a background bitmap is not really 
supported by CustomDraw, so scrolling can get messy. Best to
subclass the TreeView and handle scrolling messages.
}
  with TV.Canvas do
  begin
    if None1 <> nil then
    begin
      if None1.Checked then //no picture
      begin
        Brush.Color := BkgColorDialog.Color;
        Brush.Style := FBrushStyle;
        FillRect(ARect);
      end else
        if Tile1.Checked then //tile bitmap
        begin
          Brush.Bitmap := Image1.Picture.Bitmap;
            FillRect(ARect);
          end else //Stretch across the canvas.
              StretchDraw(ARect, Image1.Picture.Bitmap);
    end;
  end;
  DefaultDraw := FDefaultDraw;
  // Setting DefaultDraw to false here prevents all calls to
  // OnCustomDrawItem.
end;

 

Copyright(C) 2008 CodeGear(TM). All Rights Reserved.
What do you think about this topic? Send feedback!