large radius circle problem

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
genejAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

y96andhaCommented:
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.



0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
genejAuthor Commented:
I wish that the response had offered a solution to the large arc problem of at least a direction towards a solution.
0
y96andhaCommented:
What are you going to use the arcs for? I would have tried to create them myself, by plotting single pixels.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual Basic Classic

From novice to tech pro — start learning today.