Solved

large  radius circle problem

Posted on 1997-07-16
3
348 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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

Enroll in May's Course of the Month

May’s Course of the Month is now available! Experts Exchange’s Premium Members and Team Accounts have access to a complimentary course each month as part of their membership—an extra way to increase training and boost professional development.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Passing a Text Box name to a Sub 6 104
Excel Automation VBA 19 116
how to Classify of email (pdf attachments) 7 57
VB6 calling COM DLL written in Visual Studio 2003 6 58
I’ve seen a number of people looking for examples of how to access web services from VB6.  I’ve been using a test harness I built in VB6 (using many resources I found online) that I use for small projects to work out how to communicate with web serv…
Enums (shorthand for ‘enumerations’) are not often used by programmers but they can be quite valuable when they are.  What are they? An Enum is just a type of variable like a string or an Integer, but in this case one that you create that contains…
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…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

752 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