We help IT Professionals succeed at work.

large  radius circle problem

genej
genej asked
on
Medium Priority
373 Views
Last Modified: 2012-05-04
Windows has a limit drawing circles with a large
radius, where the center point is beyond a certain limit.  Try the following
code:

ScaleLeft = 15500
ScaleTop = 15500
rad = 61317
Circle (61420, 61420), rad, RGB(0, 0, 0)


This sample will draw a curve.  BUT if you increase the radius (rad) from
61317 to 61318 it will no longer work.  Interesting.

There are possibley things one can do, like changing the scalemethod but this requires a lot of extra design work
Comment
Watch Question

Commented:
I am not sure what API calls the Circle function uses, but many graphics API calls are limited to 16-bit values under Windows 95. This is the reason for your function not working. I run Windows NT so when I tested your code, it worked with 61318 too.

I think that this could be the function used:

The Arc function draws an elliptical arc.

BOOL Arc(
    HDC  hdc,      // handle to device context
    int  nLeftRect,      // x-coordinate of bounding rectangle's upper-left corner
    int  nTopRect,      // y-coordinate of bounding rectangle's upper-left corner  
    int  nRightRect,      // x-coordinate of bounding rectangle's lower-right corner  
    int  nBottomRect,      // y-coordinate of bounding rectangle's lower-right corner    
    int  nXStartArc,      // first radial ending point
    int  nYStartArc,      // first radial ending point
    int  nXEndArc,      // second radial ending point
    int  nYEndArc       // second radial ending point
   );      
Parameters
hdc
Identifies the device context where drawing takes place.
nLeftRect
Specifies the logical x-coordinate of the upper-left corner of the bounding rectangle.
Windows 95: The sum of nLeftRect plus nRightRect must be less than 32768.
nTopRect
Specifies the logical y-coordinate of the upper-left corner of the bounding rectangle.
Windows 95: The sum of nTopRect plus nBottomRect must be less than 32768.
nRightRect
Specifies the logical x-coordinate of the lower-right corner of the bounding rectangle.
Windows 95: The sum of nLeftRect plus nRightRect must be less than 32768.
nBottomRect
Specifies the logical y-coordinate of the lower-right corner of the bounding rectangle.
Windows 95: The sum of nTopRect plus nBottomRect must be less than 32768.
nXStartArc
Specifies the logical x-coordinate of the ending point of the radial line defining the starting point of the arc.
nYStartArc
Specifies the logical y-coordinate of the ending point of the radial line defining the starting point of the arc.
nXEndArc
Specifies the logical x-coordinate of the ending point of the radial line defining the ending point of the arc.
nYEndArc
Specifies the logical y-coordinate of the ending point of the radial line defining the ending point of the arc.

Return Value
If the arc is drawn, the return value is TRUE; otherwise, it is FALSE.

Remarks
The points (nLeftRect, nTopRect) and (nRightRect, nBottomRect) specify the bounding rectangle. An ellipse formed by the specified bounding rectangle defines the curve of the arc. The arc extends in the current drawing direction from the point where it intersects the radial from the center of the bounding rectangle to the (nXStartArc, nYStartArc) point. The arc ends where it intersects the radial from the center of the bounding rectangle to the (nXEndArc, nYEndArc) point. If the starting point and ending point are the same, a complete ellipse is drawn.
The arc is drawn using the current pen; it is not filled.
The current position is neither used nor updated by Arc.

Windows 95: The drawing direction is always counterclockwise.

Windows NT: Use the GetArcDirection and SetArcDirection functions to get and set the current drawing direction for a device context. The default drawing direction is counterclockwise.

Windows 95 only: The sum of the coordinates of the bounding rectangle cannot exceed 32,767. The sum of nLeftRect and nRightRect or nTopRect and nBottomRect parameters cannot exceed 32,767.



Not the solution you were looking for? Getting a personalized solution is easy.

Ask the Experts

Author

Commented:
I wish that the response had offered a solution to the large arc problem of at least a direction towards a solution.

Commented:
What are you going to use the arcs for? I would have tried to create them myself, by plotting single pixels.
Access more of Experts Exchange with a free account
Thanks for using Experts Exchange.

Create a free account to continue.

Limited access with a free account allows you to:

  • View three pieces of content (articles, solutions, posts, and videos)
  • Ask the experts questions (counted toward content limit)
  • Customize your dashboard and profile

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.