本文整理汇总了C#中Cairo.Context.LineTo方法的典型用法代码示例。如果您正苦于以下问题:C# Context.LineTo方法的具体用法?C# Context.LineTo怎么用?C# Context.LineTo使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Cairo.Context
的用法示例。
在下文中一共展示了Context.LineTo方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: draw
static void draw (Context cr, int width, int height)
{
double xc = 0.5;
double yc = 0.5;
double radius = 0.4;
double angle1 = 45.0 * (Math.PI / 180.0); // angles are specified
double angle2 = 180.0 * (Math.PI / 180.0); // in radians
cr.Scale (width, height);
cr.LineWidth = 0.04;
cr.Arc (xc, yc, radius, angle1, angle2);
cr.Stroke ();
// draw helping lines
cr.Color = new Color(1, 0.2, 0.2, 0.6);
cr.Arc (xc, yc, 0.05, 0, 2 * Math.PI);
cr.Fill ();
cr.LineWidth = 0.03;
cr.Arc (xc, yc, radius, angle1, angle1);
cr.LineTo (new PointD (xc, yc));
cr.Arc (xc, yc, radius, angle2, angle2);
cr.LineTo (new PointD (xc, yc));
cr.Stroke ();
}
示例2: Image_Loaded
private void Image_Loaded(object sender, RoutedEventArgs e)
{
Image image = (Image)sender;
using (ImageSurface surface = new ImageSurface(Format.Argb32, (int)image.Width, (int)image.Height))
{
using (Context context = new Context(surface))
{
PointD p = new PointD(10.0, 10.0);
PointD p2 = new PointD(100.0, 10.0);
PointD p3 = new PointD(100.0, 100.0);
PointD p4 = new PointD(10.0, 100.0);
context.MoveTo(p);
context.LineTo(p2);
context.LineTo(p3);
context.LineTo(p4);
context.LineTo(p);
context.ClosePath();
context.Fill();
context.MoveTo(140.0, 110.0);
context.SetFontSize(32.0);
context.SetSourceColor(new Color(0.0, 0.0, 0.8, 1.0));
context.ShowText("Hello Cairo!");
surface.Flush();
RgbaBitmapSource source = new RgbaBitmapSource(surface.Data, surface.Width);
image.Source = source;
}
}
}
示例3: DrawGraduations
protected override void DrawGraduations(Context gr, PointD pStart, PointD pEnd)
{
Rectangle r = ClientRectangle;
Foreground.SetAsSource (gr);
gr.LineWidth = 2;
gr.MoveTo(pStart);
gr.LineTo(pEnd);
gr.Stroke();
gr.LineWidth = 1;
double sst = unity * SmallIncrement;
double bst = unity * LargeIncrement;
PointD vBar = new PointD(0, sst);
for (double x = Minimum; x <= Maximum - Minimum; x += SmallIncrement)
{
double lineLength = r.Height / 3;
if (x % LargeIncrement != 0)
lineLength /= 3;
PointD p = new PointD(pStart.X + x * unity, pStart.Y);
gr.MoveTo(p);
gr.LineTo(new PointD(p.X, p.Y + lineLength));
}
gr.Stroke();
}
示例4: Main
static void Main()
{
// The using statement ensures that potentially heavy objects
// are disposed immediately.
using (ImageSurface draw = new ImageSurface(Format.Argb32, 70, 150))
{
using (Context gr = new Context(draw))
{
gr.Antialias = Antialias.Subpixel; // sets the anti-aliasing method
gr.LineWidth = 9; // sets the line width
gr.SetSourceColor(new Color(0, 0, 0, 1)); // red, green, blue, alpha
gr.MoveTo(10, 10); // sets the Context's start point.
gr.LineTo(40, 60); // draws a "virtual" line from 5,5 to 20,30
gr.Stroke(); //stroke the line to the image surface
gr.Antialias = Antialias.Gray;
gr.LineWidth = 8;
gr.SetSourceColor(new Color(1, 0, 0, 1));
gr.LineCap = LineCap.Round;
gr.MoveTo(10, 50);
gr.LineTo(40, 100);
gr.Stroke();
gr.Antialias = Antialias.None; //fastest method but low quality
gr.LineWidth = 7;
gr.MoveTo(10, 90);
gr.LineTo(40, 140);
gr.Stroke();
draw.WriteToPng("antialias.png"); //save the image as a png image.
}
}
}
示例5: OnPaint
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
using (System.Drawing.Graphics graphics = e.Graphics)
{
using (Win32Surface surface = new Win32Surface(graphics.GetHdc()))
{
using (Context context = new Context(surface))
{
context.LineWidth = 2.0;
context.SetSourceColor(this.bugColor);
context.MoveTo(7.0, 64.0);
context.CurveTo(1.0, 47.0, 2.0, 46.0, 9.0, 51.0);
context.MoveTo(25.0, 80.0);
context.CurveTo(10.0, 73.0, 11.0, 70.0, 14.0, 63.0);
context.MoveTo(10.0, 41.0);
context.CurveTo(2.0, 36.0, 1.0, 33.0, 1.0, 26.0);
context.LineWidth = 1.0;
context.MoveTo(1.0, 26.0);
context.CurveTo(5.0, 23.0, 7.0, 18.0, 12.0, 17.0);
context.LineTo(12.0, 14.0);
context.Stroke();
context.MoveTo(30.0, 74.0);
context.CurveTo(14.0, 64.0, 10.0, 48.0, 11.0, 46.0);
context.LineTo(10.0, 45.0);
context.LineTo(10.0, 40.0);
context.CurveTo(13.0, 37.0, 15.0, 35.0, 19.0, 34.0);
context.Stroke();
}
}
}
}
示例6: Draw
public static void Draw(Context grw, Line line)
{
var color = AppController.Instance.Config.LineColor;
grw.SetSourceRGB (
color.Red,
color.Green,
color.Blue);
var segments = AppController.Instance.Surface.Segments;
var s1 = segments.FirstOrDefault (s => s.Position.X == line.Input.X
&& s.Position.Y == line.Input.Y);
var s2 = segments.FirstOrDefault (s => s.Position.X == line.Output.X
&& s.Position.Y == line.Output.Y);
if (s1 == null || s2 == null)
{
return;
}
//todo : use one func.
var start = s1.Connectors
.FirstOrDefault (p => p.Marker == line.InputMarker);
//todo : use one func.
var stop = s2.Connectors
.FirstOrDefault (p => p.Marker == line.OutputMarker);
if (start == null || stop == null)
{
return;
}
grw.MoveTo (
start.Center.GeometryX,
start.Center.GeometryY);
if (line.Input.X == line.Output.X ||
line.Input.Y == line.Output.Y) {
grw.LineTo (
stop.Center.GeometryX,
stop.Center.GeometryY);
} else {
grw.LineTo (
stop.Center.GeometryX,
start.Center.GeometryY);
grw.LineTo (
stop.Center.GeometryX,
stop.Center.GeometryY);
}
grw.Stroke();
}
示例7: Draw
public override void Draw(Context context)
{
SetupLayout(context);
RectangleD displayBox = DisplayBox;
displayBox.OffsetDot5();
double side = 10.0;
context.LineWidth = LineWidth;
context.Save ();
//Box
context.MoveTo (displayBox.X, displayBox.Y);
context.LineTo (displayBox.X, displayBox.Y + displayBox.Height);
context.LineTo (displayBox.X + displayBox.Width, displayBox.Y + displayBox.Height);
context.LineTo (displayBox.X + displayBox.Width, displayBox.Y + side);
context.LineTo (displayBox.X + displayBox.Width - side, displayBox.Y);
context.LineTo (displayBox.X, displayBox.Y);
context.Save ();
//Triangle
context.MoveTo (displayBox.X + displayBox.Width - side, displayBox.Y);
context.LineTo (displayBox.X + displayBox.Width - side, displayBox.Y + side);
context.LineTo (displayBox.X + displayBox.Width, displayBox.Y + side);
context.LineTo (displayBox.X + displayBox.Width - side, displayBox.Y);
context.Restore ();
context.Color = FillColor;
context.FillPreserve ();
context.Color = LineColor;
context.Stroke ();
DrawText (context);
}
示例8: DrawBackground
protected override void DrawBackground (Context context, Gdk.Rectangle region)
{
LayoutRoundedRectangle (context, region);
context.Clip ();
context.SetSourceColor (CairoExtensions.ParseColor ("D3E6FF"));
context.Paint ();
context.Save ();
context.Translate (region.X + region.Width / 2.0, region.Y + region.Height);
using (var rg = new RadialGradient (0, 0, 0, 0, 0, region.Height * 1.2)) {
var color = CairoExtensions.ParseColor ("E5F0FF");
rg.AddColorStop (0, color);
color.A = 0;
rg.AddColorStop (1, color);
context.Scale (region.Width / (double)region.Height, 1.0);
context.SetSource (rg);
context.Paint ();
}
context.Restore ();
LayoutRoundedRectangle (context, region, -3, -3, 2);
context.SetSourceRGBA (1, 1, 1, 0.4);
context.LineWidth = 1;
context.StrokePreserve ();
context.Clip ();
int boxSize = 11;
int x = region.Left + (region.Width % boxSize) / 2;
for (; x < region.Right; x += boxSize) {
context.MoveTo (x + 0.5, region.Top);
context.LineTo (x + 0.5, region.Bottom);
}
int y = region.Top + (region.Height % boxSize) / 2;
y += boxSize / 2;
for (; y < region.Bottom; y += boxSize) {
context.MoveTo (region.Left, y + 0.5);
context.LineTo (region.Right, y + 0.5);
}
context.SetSourceRGBA (1, 1, 1, 0.2);
context.Stroke ();
context.ResetClip ();
}
示例9: Draw
public override void Draw (Context context, IDrawingView view) {
RectangleD rect = ViewDisplayBox(view);
context.LineWidth = LineWidth;
context.MoveTo (rect.Center.X, rect.Top);
context.LineTo (rect.Right, rect.Center.Y);
context.LineTo (rect.Center.X, rect.Bottom);
context.LineTo (rect.Left, rect.Center.Y);
context.LineTo (rect.Center.X, rect.Top);
context.Color = new Cairo.Color (1.0, 0.0, 0.0, 0.8);
context.FillPreserve ();
context.Color = new Cairo.Color (0.0, 0.0, 0.0, 1.0);
context.Stroke ();
}
示例10: Draw
public override PointD Draw (Context context, PointD a, PointD b) {
PointD leftPoint = new PointD ();
PointD middlePoint = new PointD ();
PointD rightPoint = new PointD ();
Geometry.GetArrowPoints (a, b, _lineDistance, _pointDistance,
out leftPoint, out rightPoint, out middlePoint);
context.MoveTo (middlePoint);
context.LineTo (leftPoint);
context.LineTo (a);
context.LineTo (rightPoint);
context.LineTo (middlePoint);
context.Stroke ();
return middlePoint;
}
示例11: DrawObject
public void DrawObject(Context ctx, DrawingObject body)
{
if (body == null)
return;
ctx.Save ();
ctx.Color = new Cairo.Color (0, 0, 0);
ctx.LineWidth = 1;
foreach (Tuple<PointDouble, PointDouble> line in body.lines) {
ctx.MoveTo (line.Item1.toPointD());
ctx.LineTo (line.Item2.toPointD());
}
if (body.points.Count > 1)
ctx.Rectangle(body._centerOfMass.X - 5, body._centerOfMass.Y - 5, 10, 10);
ctx.Stroke ();
foreach (PointDouble point in body.points) {
ctx.Rectangle (point.X - 5, point.Y - 5, 10, 10);
ctx.Fill ();
}
foreach (Tuple<PointDouble, double, double> force in body._forces) {
DrawForce (ctx, force);
}
foreach (Tuple<PointDouble, double> moment in body._moments) {
DrawMoment (ctx, moment);
}
ctx.Restore ();
}
示例12: OnTransformIp
protected override FlowReturn OnTransformIp (Gst.Buffer buf) {
if (!buf.IsWritable)
return FlowReturn.Error;
Cairo.ImageSurface img = new Cairo.ImageSurface (buf.Data, Cairo.Format.Rgb24, width, height, width*4);
using (Cairo.Context context = new Cairo.Context (img)) {
double dx = (double) ( (buf.Timestamp / Clock.MSecond) % 2180) / 5;
context.Save ();
context.Scale (width / 640.0, height / 480.0);
context.MoveTo (300, 10 + dx);
context.LineTo (500 - dx, 400);
context.LineWidth = 4.0;
context.Color = new Color (0, 0, 1.0);
context.Stroke();
context.Restore ();
if (lastX != -1 && lastY != -1) {
context.Color = new Color (1.0, 0, 0);
context.Translate (lastX, lastY);
context.Scale (Math.Min (width / 640.0, height / 480.0), Math.Min (width / 640.0, height / 480.0));
context.Arc (0, 0, 10.0, 0.0, 2 * Math.PI);
context.Fill();
}
}
img.Destroy ();
return base.OnTransformIp (buf);
}
示例13: OnMouseMove
protected override Gdk.Rectangle OnMouseMove (Context g, Color strokeColor, ImageSurface surface,
int x, int y, int lastX, int lastY)
{
// Cairo does not support a single-pixel-long single-pixel-wide line
if (x == lastX && y == lastY && g.LineWidth == 1 &&
PintaCore.Workspace.ActiveWorkspace.PointInCanvas (new PointD(x,y))) {
surface.Flush ();
ColorBgra source = surface.GetColorBgraUnchecked (x, y);
source = UserBlendOps.NormalBlendOp.ApplyStatic (source, strokeColor.ToColorBgra ());
surface.SetColorBgra (source, x, y);
surface.MarkDirty ();
return new Gdk.Rectangle (x - 1, y - 1, 3, 3);
}
g.MoveTo (lastX + 0.5, lastY + 0.5);
g.LineTo (x + 0.5, y + 0.5);
g.StrokePreserve ();
Gdk.Rectangle dirty = g.FixedStrokeExtents ().ToGdkRectangle ();
// For some reason (?!) we need to inflate the dirty
// rectangle for small brush widths in zoomed images
dirty.Inflate (1, 1);
return dirty;
}
示例14: DrawGraph
public void DrawGraph(Context gr)
{
int mag = Magnification;
double xoffset = (Allocation.Width/2) ;
double yoffset = (Allocation.Height/2) ;
if (ForceGraph != null) {
this.GdkWindow.Clear ();
gr.Antialias = Antialias.Subpixel;
foreach (var p in ForceGraph.Springs){
gr.LineWidth = 1.5;
if ( p.Data != null ){
var data = p.Data as NodeData;
if ( data != null )
gr.Color = data.Stroke;
} else {
gr.Color = new Color( 0,0,0,1);
}
gr.MoveTo( xoffset + ( p.NodeA.Location.X * mag ), yoffset + ( p.NodeA.Location.Y * mag ) );
gr.LineTo( xoffset + ( p.NodeB.Location.X * mag ), yoffset + ( p.NodeB.Location.Y * mag ) );
gr.Stroke();
}
foreach (var n in ForceGraph.Nodes) {
var stroke = new Color( 0.1, 0.1, 0.1, 0.8 );
var fill = new Color( 0.2, 0.7, 0.7, 0.8 );
var size = 5.5;
NodeData nd = n.Data as NodeData;
if ( nd != null ){
stroke = nd.Stroke;
fill = nd.Fill;
size = nd.Size;
}
DrawFilledCircle (gr,
xoffset + (mag * n.Location.X),
yoffset + (mag * n.Location.Y),
size,
stroke,
fill
);
if ( nd != null ) {
if ( nd.Label != null ){
gr.Color = new Color(0,0,0,0.7);
gr.SetFontSize(24);
gr.MoveTo( 25 + xoffset + (mag * n.Location.X), 25 + yoffset + (mag * n.Location.Y));
gr.ShowText( nd.Label );
}
}
}
}
}
示例15: Draw
public override void Draw(Context cr, Gdk.Rectangle clip)
{
base.Draw(cr, clip);
double X = clip.X;
double Y = clip.Y;
double Width = clip.Width;
double Height = clip.Height;
// Blue Rulings
if(horizontalRule) {
cr.Color = blue;
for(double i = Y - (Y % ruleDistance) + ruleDistance;
i <= Y + Height; i += ruleDistance) {
cr.MoveTo(X, i);
cr.LineTo(X + Width, i);
cr.Stroke();
}
}
if(verticalRule) {
cr.Color = blue;
for(double i = X - (X % ruleDistance) + ruleDistance;
i <= X + Width; i += ruleDistance) {
cr.MoveTo(i, Y);
cr.LineTo(i, Y + Height);
cr.Stroke();
}
}
// Red Margin Line
if(leftMargin) {
cr.Color = red;
cr.MoveTo(marginSize, Y);
cr.LineTo(marginSize, Y + Height);
cr.Stroke();
}
// Holes
if(holes) {
cr.Color = black;
cr.Arc(ruleDistance/2, 150, 17, 0, 2 * Math.PI);
cr.Arc(ruleDistance/2, 650, 17, 0, 2 * Math.PI);
cr.Arc(ruleDistance/2, 1150,17, 0, 2 * Math.PI);
cr.Fill();
}
}