Interactive PowerBasic Forum

Legacy Software (PBWIN 9.0+/PBCC 5.0+) => Source Code => Graphics and Multimedia => GDI+ (GDI Plus) => Topic started by: José Roca on June 29, 2008, 04:21:18 PM

Title: GDI+: GdipRotateTextureTransform
Post by: José Roca on June 29, 2008, 04:21:18 PM


The following example creates a texture brush and sets the transformation of the brush. The code then uses the transformed brush to fill a rectangle.

C++


VOID Example_RotateTransform(HDC hdc)
{
   Graphics graphics(hdc);

   Image image(L"HouseAndTree.Gif");
   TextureBrush textureBrush(&image);
   textureBrush.ScaleTransform(3, 1);                    // first scale
   textureBrush.RotateTransform(30, MatrixOrderAppend);  // then rotate
   graphics.FillRectangle(&textureBrush, 0, 0, 400, 200);
}


PowerBASIC


SUB GDIP_RotateTextureTransform (BYVAL hdc AS DWORD)

   LOCAL hStatus AS LONG
   LOCAL pGraphics AS DWORD
   LOCAL pImage AS DWORD
   LOCAL pTextureBrush AS DWORD
   LOCAL strFileName AS STRING

   hStatus = GdipCreateFromHDC(hdc, pGraphics)

   strFileName = UCODE$("HouseAndTree.gif")
   hStatus = GdipLoadImageFromFile(STRPTR(strFileName), pImage)
   hStatus = GdipCreateTexture(pImage, %WrapModeTile, pTextureBrush)
   hStatus = GdipScaleTextureTransform(pTextureBrush, 3, 1, %MatrixOrderPrepend)   ' first scale
   hStatus = GdipRotateTextureTransform(pTextureBrush, 30, %MatrixOrderAppend)     ' then rotate
   hStatus = GdipFillRectangleI(pGraphics, pTextureBrush, 0, 0, 400, 200)

   ' // Cleanup
   IF pImage THEN GdipDisposeImage(pImage)
   IF pTextureBrush THEN GdipDeleteBrush(pTextureBrush)
   IF pGraphics THEN GdipDeleteGraphics(pGraphics)

END SUB


The following illustration shows the output of the preceding code.

(http://www.jose.it-berater.org/captures/GdipRotateTextureTransform.png)