Solved

large  radius circle problem

Posted on 1997-07-16
3
347 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
0
Comment
Question by:genej
  • 2
3 Comments
 
LVL 5

Accepted Solution

by:
y96andha earned 100 total points
ID: 1428456
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
 

Author Comment

by:genej
ID: 1428457
I wish that the response had offered a solution to the large arc problem of at least a direction towards a solution.
0
 
LVL 5

Expert Comment

by:y96andha
ID: 1428458
What are you going to use the arcs for? I would have tried to create them myself, by plotting single pixels.
0

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction While answering a recent question about filtering a custom class collection, I realized that this could be accomplished with very little code by using the ScriptControl (SC) library.  This article will introduce you to the SC library a…
Since upgrading to Office 2013 or higher installing the Smart Indenter addin will fail. This article will explain how to install it so it will work regardless of the Office version installed.
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…

685 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question