本文整理汇总了C#中MonoMac.CoreGraphics.CGContext.ClosePath方法的典型用法代码示例。如果您正苦于以下问题:C# CGContext.ClosePath方法的具体用法?C# CGContext.ClosePath怎么用?C# CGContext.ClosePath使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MonoMac.CoreGraphics.CGContext
的用法示例。
在下文中一共展示了CGContext.ClosePath方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: HatchSolidDiamond
void HatchSolidDiamond(CGContext context)
{
var hatchWidth = getHatchWidth (hatchStyle);
var hatchHeight = getHatchHeight (hatchStyle);
var lineWidth = getLineWidth (hatchStyle);
initializeContext(context, hatchHeight, false);
/* draw background */
drawBackground (context, backColor, hatchWidth, hatchHeight);
/* draw lines in the foreground color */
context.SetFillColor(foreColor.ToCGColor());
context.SetStrokeColor(foreColor.ToCGColor());
context.SetLineWidth(lineWidth);
context.SetLineCap(CGLineCap.Square);
float halfMe = hatchWidth / 2.0f;
// We will paint two triangles from corners meeting in the middle
// make sure to offset by half pixels so that the point is actually a point.
context.MoveTo(-HALF_PIXEL_X,HALF_PIXEL_Y);
context.AddLineToPoint(2+HALF_PIXEL_X, halfMe - HALF_PIXEL_Y);
context.AddLineToPoint(-HALF_PIXEL_X, hatchHeight- (1.0f + HALF_PIXEL_Y));
context.ClosePath();
context.FillPath();
// now we do the right one
context.MoveTo(hatchWidth,HALF_PIXEL_Y);
context.AddLineToPoint(halfMe+HALF_PIXEL_X, halfMe - HALF_PIXEL_Y);
context.AddLineToPoint(hatchWidth, hatchHeight - (1.0f + HALF_PIXEL_Y));
context.ClosePath();
context.FillPath();
}
示例2: DrawLine
public static void DrawLine(CGContext context, List<PointF> points, CGColor color, float lineWidth, bool closePath, bool dashed)
{
if (points == null)
throw new NullReferenceException();
if (points.Count == 0)
throw new ArgumentException("The line must have at least one point.");
context.SaveState();
context.SetStrokeColor(color);
context.SetLineWidth(lineWidth);
context.MoveTo(points[0].X, points[0].Y);
for(int a = 1; a < points.Count; a++)
context.AddLineToPoint(points[a].X, points[a].Y);
if (dashed)
context.SetLineDash(0, new float[2] { 1, 2 }, 2);
if (closePath)
context.ClosePath();
context.StrokePath();
context.RestoreState();
}
示例3: 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 RectangleF(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();
}
}