本文整理汇总了C#中CGContext.AddEllipseInRect方法的典型用法代码示例。如果您正苦于以下问题:C# CGContext.AddEllipseInRect方法的具体用法?C# CGContext.AddEllipseInRect怎么用?C# CGContext.AddEllipseInRect使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CGContext
的用法示例。
在下文中一共展示了CGContext.AddEllipseInRect方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DrawInContext
public override void DrawInContext (CGContext context)
{
base.DrawInContext (context);
context.AddEllipseInRect (Bounds);
context.SetFillColor (ClockColor);
context.FillPath ();
}
示例2: DrawEllipsis
public static void DrawEllipsis(CGContext context, RectangleF rect, CGColor color, float lineWidth)
{
context.SaveState();
context.SetStrokeColor(color);
context.SetLineWidth(lineWidth);
context.AddEllipseInRect(rect);
context.StrokePath();
context.RestoreState();
}
示例3: DrawInContext
public override void DrawInContext (CGContext context)
{
base.DrawInContext (context);
// Console.WriteLine ("DrawInContext Radius: {0} Thickness: {1} Color: {2}", Radius, Thickness, Color);
PointF centerPoint = new PointF (this.Bounds.Width / 2, this.Bounds.Height / 2);
CGColor glowColor = new UIColor (Color).ColorWithAlpha (0.85f).CGColor;
double innerRadius = (Radius - Thickness) > 0 ? Radius - Thickness : 0;
// Outer circle
context.AddEllipseInRect (new RectangleF (centerPoint.X - (float) Radius,
centerPoint.Y - (float) Radius,
(float) Radius * 2,
(float) Radius * 2));
// Inner circle
context.AddEllipseInRect (new RectangleF (centerPoint.X - (float) innerRadius,
centerPoint.Y - (float) innerRadius,
(float) innerRadius * 2,
(float) innerRadius * 2));
// Fill in circle
context.SetFillColor (Color);
context.SetShadowWithColor (SizeF.Empty, 10.0f, glowColor);
context.EOFillPath();
}
示例4: drawCenter
void drawCenter(CGContext contextRef, SizeF viewSize, PointF center)
{
int innerDiameter = (int)(Math.Min(viewSize.Width, viewSize.Height) - Theme.Thickness);
double innerRadius = innerDiameter / 2.0;
contextRef.SetLineWidth(Theme.Thickness);
RectangleF innerCircle = new RectangleF((float)(center.X - innerRadius), (float)(center.Y - innerRadius), (float)innerDiameter, (float)innerDiameter);
contextRef.AddEllipseInRect(innerCircle);
contextRef.Clip();
contextRef.ClearRect(innerCircle);
contextRef.SetFillColor(Theme.CenterColor.CGColor);
contextRef.FillRect(innerCircle);
}
示例5: DrawInContext
public override void DrawInContext (CGContext context)
{
// Drawing with a white stroke color
context.SetStrokeColor (1, 1, 1, 1);
// And draw with a blue fill color
context.SetFillColor (0, 0, 1, 1);
// Draw them with a 2 stroke width so they are a bit more visible.
context.SetLineWidth (2);
// Add an ellipse circumscribed in the given rect to the current path, then stroke it
context.AddEllipseInRect (new CGRect (30, 30, 60, 60));
context.StrokePath ();
// Stroke ellipse convenience that is equivalent to AddEllipseInRect(); StrokePath();
context.StrokeEllipseInRect (new CGRect (30, 120, 60, 60));
// Fill rect convenience equivalent to AddEllipseInRect(); FillPath();
context.FillEllipseInRect (new CGRect (30, 210, 60, 60));
// Stroke 2 seperate arcs
context.AddArc (150, 60, 30, 0, (float)Math.PI / 2, false);
context.StrokePath ();
context.AddArc (150, 60, 30, (float)(3 * Math.PI / 2), (float)Math.PI, true);
context.StrokePath ();
// Stroke 2 arcs together going opposite directions.
context.AddArc (150, 150, 30, 0, (float)Math.PI / 2, false);
context.AddArc (150, 150, 30, (float)(3 * Math.PI / 2), (float)Math.PI, true);
context.StrokePath ();
// Stroke 2 arcs together going the same direction..
context.AddArc (150, 240, 30, 0, (float)(Math.PI / 2), false);
context.AddArc (150, 240, 30, (float)Math.PI, (float)(3 * Math.PI / 2), false);
context.StrokePath ();
// Stroke an arc using AddArcToPoint
CGPoint[] p = {
new CGPoint (210, 30),
new CGPoint (210, 60),
new CGPoint (240, 60),
};
context.MoveTo (p [0].X, p [0].Y);
context.AddArcToPoint (p [1].X, p [1].Y, p [2].X, p [2].Y, 30);
context.StrokePath ();
// Show the two segments that are used to determine the tangent lines to draw the arc.
context.SetStrokeColor (1, 0, 0, 1);
context.AddLines (p);
context.StrokePath ();
// As a bonus, we'll combine arcs to create a round rectangle!
// Drawing with a white stroke color
context.SetStrokeColor (1, 1, 1, 1);
// If you were making this as a routine, you would probably accept a rectangle
// that defines its bounds, and a radius reflecting the "rounded-ness" of the rectangle.
var rrect = new CGRect (210, 90, 60, 60);
var radius = 10;
// NOTE: At this point you may want to verify that your radius is no more than half
// the width and height of your rectangle, as this technique degenerates for those cases.
// In order to draw a rounded rectangle, we will take advantage of the fact that
// context.AddArcToPoint will draw straight lines past the start and end of the arc
// in order to create the path from the current position and the destination position.
// In order to create the 4 arcs correctly, we need to know the min, mid and max positions
// on the x and y lengths of the given rectangle.
nfloat minx = rrect.X, midx = rrect.X + rrect.Width / 2, maxx = rrect.X + rrect.Width;
nfloat miny = rrect.Y, midy = rrect.Y + rrect.Height / 2, maxy = rrect.Y + rrect.Height;
// Next, we will go around the rectangle in the order given by the figure below.
// minx midx maxx
// miny 2 3 4
// midy 1 9 5
// maxy 8 7 6
// Which gives us a coincident start and end point, which is incidental to this technique, but still doesn't
// form a closed path, so we still need to close the path to connect the ends correctly.
// Thus we start by moving to point 1, then adding arcs through each pair of points that follows.
// You could use a similar tecgnique to create any shape with rounded corners.
// Start at 1
context.MoveTo (minx, midy);
// Add an arc through 2 to 3
context.AddArcToPoint (minx, miny, midx, miny, radius);
// Add an arc through 4 to 5
context.AddArcToPoint (maxx, miny, maxx, midy, radius);
// Add an arc through 6 to 7
context.AddArcToPoint (maxx, maxy, midx, maxy, radius);
// Add an arc through 8 to 9
context.AddArcToPoint (minx, maxy, minx, midy, radius);
// Close the path
context.ClosePath ();
// Fill & stroke the path
context.DrawPath (CGPathDrawingMode.FillStroke);
}
示例6: make_arcs
static void make_arcs(CGContext graphics, float x, float y, float width, float height, float startAngle, float sweepAngle,
bool convert_units, bool antialiasing, bool isPieSlice)
{
int i;
float drawn = 0;
float endAngle;
bool enough = false;
// I do not think we need to convert the units so commented this out.
/* if required deal, once and for all, with unit conversions */
//if (convert_units && !OPTIMIZE_CONVERSION(graphics))
//{
// x = gdip_unitx_convgr(graphics, x);
// y = gdip_unity_convgr(graphics, y);
// width = gdip_unitx_convgr(graphics, width);
// height = gdip_unity_convgr(graphics, height);
//}
if (Math.Abs(sweepAngle) >= 360)
{
graphics.AddEllipseInRect (new CGRect (x,y,width,height));
return;
}
endAngle = startAngle + sweepAngle;
/* if we end before the start then reverse positions (to keep increment positive) */
if (endAngle < startAngle)
{
var temp = endAngle;
endAngle = startAngle;
startAngle = temp;
}
if (isPieSlice) {
graphics.MoveTo(x + (width / 2), y + (height / 2));
}
/* i is the number of sub-arcs drawn, each sub-arc can be at most 90 degrees.*/
/* there can be no more then 4 subarcs, ie. 90 + 90 + 90 + (something less than 90) */
for (i = 0; i < 4; i++)
{
float current = startAngle + drawn;
float additional;
if (enough)
{
if (isPieSlice)
{
graphics.ClosePath();
}
return;
}
additional = endAngle - current; /* otherwise, add the remainder */
if (additional > 90)
{
additional = 90.0f;
}
else
{
/* a near zero value will introduce bad artefact in the drawing (#78999) */
if (( additional >= -0.0001f) && (additional <= 0.0001f))
return;
enough = true;
}
make_arc(graphics, (i == 0), /* only move to the starting pt in the 1st iteration */
x, y, width, height, /* bounding rectangle */
current, current + additional, antialiasing, isPieSlice);
drawn += additional;
}
if (isPieSlice) {
graphics.ClosePath();
}
}