Skip to content
View in the app

A better way to browse. Learn more.

The AVSIM Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

DrawImage with PointF

Featured Replies

Hi all!!Well I'm trying to do a rotate function for an image but when I try to display the image in the shows nothing, this is my code:PointF nc1(corners[0].X,corners[0].Y); PointF nc2(corners[1].X,corners[1].Y ); PointF nc3(corners[2].X,corners[2].Y ); PointF newcorners[3] = {nc1,nc2,nc3}; const PointF* destPoints[3] = {&newcorners[0],&newcorners[1],&newcorners[2]}; //Image* bm_out = new Bitmap(wid,hgt); //Graphics gr_out(hdc); //gr_out.FromImage(bm_out); //swprintf(buf_wchmsg, L"%4.3f",corners[0].X); //graphics.DrawString(buf_wchmsg, -1, &SmallLetters, pointPower, &whiteBrush); graphics.DrawImage(imgASX,*destPoints,3); delete imgASX; imgASX = NULL;any help will be really appreaciatedRafa

  • Commercial Member

You are calling the DrawImage incorrectly. Here are the descriptions for the parameters based on what you're trying to pass.Parametersimage[in] Pointer to an Image object that specifies the source image. destPoints[in] Pointer to an array of PointF objects that specify the area, in a parallelogram, in which to draw the image. count[in] Integer that specifies the number of elements in the destPoints array. A parallelogram is not defined by three points, it is defined by four. As well, if you intend to use a rectangular area, passing a simple RectF structure would be easier to read and perhaps more efficient.

Ed Wilson

Mindstar Aviation
My Playland - I69

  • Moderator

There are many ways to use Point or PointF (some of 'em even work!)...Here is one which does work, and is perhaps the simplest example using Point:/* Draw CRS Cheveron */ Point f1(76, 15); Point f2(119, 53); Point f3(163, 15); Point f4(119, 53); Point f5(119, 77); Point hsichv[8] = {f1, f2, f3, f4, f5}; graphics.DrawLines(whitePen, hsichv, 5);Here is a simple example using PointF: PointF gs_arrow [] = { PointF (0.0, 0.0), PointF (6.0, -5.0), PointF (6.0, 5.0), }; graphics.FillPolygon (greenBrush, gs_arrow, 3);

Fr. Bill    

AOPA Member: 07141481 AARP Member: 3209010556


     Avsim Board of Directors | Avsim Forums Moderator

Hi!!! thank u very much for ur answers guys!!!let me tell u that I could load the image with the Point array!!! =)but now,do u know any function to rotate an image given the true heading???thank you in advance!!Rafa

Hi all!It seems that my DrawImage method just works with Point, but with PointF, i say this 'cuz I can display an image with Point, but when I try to do a rotate function with sin and cos, I cannot display anything, can u help me with this???, can u tell me where can I get the GDI+ who works whith PointF???thank u in advanceRafa

  • Moderator

Why not "do it" the easy way? Here is an example using PointF and the token variables for adf and heading from the sim. FLOAT64 heading = 0; FLOAT64 adfdir = 0; FLOAT64 adfndl = 0; MODULE_VAR mvheading = { PLANE_HEADING_DEGREES_MAGNETIC }; MODULE_VAR mvadfndl = { ADF_NEEDLE }; lookup_var(&mvheading); heading = mvheading.var_value.n; lookup_var(&mvadfndl); adfndl = mvadfndl.var_value.n; adfdir = (360 + adfndl + heading) ; if (adfdir > 359) { adfdir = adfdir - 360 ; } if (adfdir < 0) { adfdir = adfdir + 360; }/* Draw ADF Needle */ if (adfsignal != 0) { graphics.RotateTransform(adfdir - heading - 1); PointF adf_tail [] = { PointF (-6, 184), PointF (-6, 196), PointF (0, 196), PointF (0, 202), PointF (0, 196), PointF (6, 196), PointF (6, 184), }; PointF adf_head [] = { PointF (-5, -183), PointF (-5, -195), PointF (0, -190), PointF (5, -195), PointF (5, -183), }; graphics.DrawPolygon(whitePen, adf_tail, 7); graphics.DrawPolygon(whitePen, adf_head, 5); }

Fr. Bill    

AOPA Member: 07141481 AARP Member: 3209010556


     Avsim Board of Directors | Avsim Forums Moderator

Hi!!!It finally works!!!I had some problems because I was trying to asign floats to int, I changed everything to float and that was! =)Thanks for ur help!!!, and what about if I want to make a gauge the same size of a picture??I'm trying to change:#define GAUGE_W 272but it doesnt seem to get it done well!!can u help me again??Rafa

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.