本文整理汇总了C#中Cairo.Translate方法的典型用法代码示例。如果您正苦于以下问题:C# Cairo.Translate方法的具体用法?C# Cairo.Translate怎么用?C# Cairo.Translate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Cairo
的用法示例。
在下文中一共展示了Cairo.Translate方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Paint
public override void Paint(Cairo.Context gr, Rectangle rect, string subPart = "")
{
float widthRatio = 1f;
float heightRatio = 1f;
if (Scaled){
widthRatio = (float)rect.Width / Dimensions.Width;
heightRatio = (float)rect.Height / Dimensions.Height;
}
if (KeepProportions) {
if (widthRatio < heightRatio)
heightRatio = widthRatio;
else
widthRatio = heightRatio;
}
gr.Save ();
gr.Translate (rect.Left,rect.Top);
gr.Scale (widthRatio, heightRatio);
gr.Translate ((rect.Width/widthRatio - Dimensions.Width)/2, (rect.Height/heightRatio - Dimensions.Height)/2);
using (ImageSurface imgSurf = new ImageSurface (image, Format.Argb32,
Dimensions.Width, Dimensions.Height, 4 * Dimensions.Width)) {
gr.SetSourceSurface (imgSurf, 0,0);
gr.Paint ();
}
gr.Restore ();
}
示例2: Paint
public override void Paint(Cairo.Context gr, Rectangle rect, string subPart = "")
{
float widthRatio = 1f;
float heightRatio = 1f;
if (Scaled) {
widthRatio = (float)rect.Width / Dimensions.Width;
heightRatio = (float)rect.Height / Dimensions.Height;
}
if (KeepProportions) {
if (widthRatio < heightRatio)
heightRatio = widthRatio;
else
widthRatio = heightRatio;
}
gr.Save ();
gr.Translate (rect.Left,rect.Top);
gr.Scale (widthRatio, heightRatio);
gr.Translate (((float)rect.Width/widthRatio - Dimensions.Width)/2f, ((float)rect.Height/heightRatio - Dimensions.Height)/2f);
if (string.IsNullOrEmpty (subPart))
hSVG.RenderCairo (gr);
else
hSVG.RenderCairoSub (gr, "#" + subPart);
gr.Restore ();
}
示例3: Draw
/// <summary>
/// Draw the robot taking into account the center x and y position of the map which
/// will be different from the true center x and y positions on the drawing context.
/// This method will result in a red wheeled robot with black tyres being drawn at
/// the robots location on the map.
///
/// The scale value is currently unused but it could be useful if the map was scaled
/// in some way for example a mini-map may be 10 times smaller than the original
/// results in 1:10 scale robot.
/// </summary>
/// <param name="cairoContext">Cairo context to draw to (assuming a map).</param>
/// <param name="centerX">Center x position of map to draw onto.</param>
/// <param name="centerY">Center y position of map to draw onto.</param>
/// <param name="scale">Scale currently unused.</param>
public void Draw(Cairo.Context cairoContext, int centerX, int centerY, double scale)
{
// Scale up to centimeters.
int width = (int)(robot.Width * 100);
int height = (int)(robot.Height * 100);
int x = (int)(robot.X * 100);
int y = (int)(robot.Y * 100);
// Set a red colour.
cairoContext.SetSourceRGB(255, 0, 0);
cairoContext.LineWidth = 1.0;
cairoContext.LineCap = LineCap.Butt;
cairoContext.Translate (centerX + x, centerY - y);
cairoContext.Rotate (relativeRotation); // Rotate the robot based on its orientation in radians.
// Draw the robot as a triangle.
cairoContext.MoveTo (0, -height / 2);
cairoContext.LineTo (-width / 2, height / 2);
cairoContext.LineTo (width / 2, height / 2);
cairoContext.LineTo (0, -height / 2);
cairoContext.Stroke ();
// Reset the drawing context.
cairoContext.Rotate (-relativeRotation);
cairoContext.Translate (-(centerX + x), -(centerY - y));
}
示例4: ClippedRender
protected override void ClippedRender (Cairo.Context cr)
{
Brush brush = Background;
if (!brush.IsValid) {
return;
}
double x = Double.IsNaN (brush.Width)
? 0
: (RenderSize.Width - brush.Width) * XAlign;
double y = Double.IsNaN (brush.Height)
? 0
: (RenderSize.Height - brush.Height) * YAlign;
cr.Rectangle (0, 0, RenderSize.Width, RenderSize.Height);
cr.ClipPreserve ();
if (x != 0 || y != 0) {
cr.Translate (x, y);
}
cr.Antialias = Cairo.Antialias.None;
brush.Apply (cr);
cr.Fill ();
}
示例5: OnDrawn
protected override bool OnDrawn(Cairo.Context cr)
{
double step_width = Allocation.Width / (double)steps;
double step_height = Allocation.Height / (double)steps;
double h = 1.0;
double s = 0.0;
for (int xi = 0, i = 0; xi < steps; xi++) {
for (int yi = 0; yi < steps; yi++, i++) {
double bg_b = (double)(i / 255.0);
double fg_b = 1.0 - bg_b;
double x = xi * step_width;
double y = yi * step_height;
cr.Rectangle (x, y, step_width, step_height);
cr.Color = CairoExtensions.ColorFromHsb (h, s, bg_b);
cr.Fill ();
int tw, th;
Pango.Layout layout = new Pango.Layout (PangoContext);
layout.SetText (((int)(bg_b * 255.0)).ToString ());
layout.GetPixelSize (out tw, out th);
cr.Translate (0.5, 0.5);
cr.MoveTo (x + (step_width - tw) / 2.0, y + (step_height - th) / 2.0);
cr.Color = CairoExtensions.ColorFromHsb (h, s, fg_b);
PangoCairoHelper.ShowLayout (cr, layout);
cr.Translate (-0.5, -0.5);
}
}
return true;
}
示例6: oval_path
static void oval_path (Cairo.Context gr, double xc, double yc, double xr, double yr)
{
gr.Translate (xc, yc);
gr.Scale (1.0, yr / xr);
gr.MoveTo (new PointD (xr, 0.0) );
gr.Arc (0, 0, xr, 0, 2 * M_PI);
gr.ClosePath ();
}
示例7: Render
public virtual void Render(Cairo.Context cr, Layout layout, double x, double y, double w, double h)
{
cr.Save();
cr.Translate (x,y);
// make the background white
cr.Color = new Cairo.Color(1, 1, 1);
cr.Rectangle(0,0,w,h);
cr.Fill();
// calc some values
int lw;
string prefix = "INV-"+InventoryAbbreviation+"-";
string idString = Id.ToString("0000000000");
// basic text stuff
layout.FontDescription = FontDescription.FromString(CalcFont(Layout,layout,h));
layout.Width = (int)(w*Scale.PangoScale);
layout.Alignment = Alignment.Center;
// draw the description
int descH = 0;
if(Layout.UseDescription){
Layout descLayout = layout.Copy();
descLayout.SetText (Description);
descLayout.GetPixelSize(out lw, out descH);
layout.Ellipsize = EllipsizeMode.Middle;
layout.Justify = true;
cr.Color = new Cairo.Color(0, 0, 0);
Pango.CairoHelper.ShowLayout (cr, descLayout);
}
// draw the barcode text
int codeH = 0;
if(Layout.UseBarcodeText){
Layout codeLayout = layout.Copy();
codeLayout.SetText (prefix+idString);
codeLayout.GetPixelSize(out lw, out codeH);
cr.MoveTo(0,h-(double)codeH);
cr.Color = new Cairo.Color(0, 0, 0);
Pango.CairoHelper.ShowLayout (cr, codeLayout);
}
// draw the barcode
if(Layout.UseBarcode){
double barcodeH = h-((double)codeH+(double)descH+Layout.SpacingSize*2);
if(barcodeH>0){
IBarcode bc = new Code128();
bc.WriteString(prefix+idString);
bc.WriteEnd();
RenderBarcode(bc,cr,0,descH+Layout.SpacingSize,w,barcodeH);
}
}
cr.Restore();
}
示例8: draw
static void draw (Cairo.Context gr, int width, int height)
{
int w, h;
ImageSurface image;
gr.Scale (width, height);
gr.LineWidth = 0.04;
image = new ImageSurface ("data/e.png");
w = image.Width;
h = image.Height;
gr.Translate (0.5, 0.5);
gr.Rotate (45* M_PI/180);
gr.Scale (1.0/w, 1.0/h);
gr.Translate (-0.5*w, -0.5*h);
image.Show (gr, 0, 0);
image.Destroy ();
}
示例9:
void IIconBarMarker.DrawIcon (TextEditor ed, Cairo.Context cr, DocumentLine line, int lineNumber, double x, double y, double width, double height)
{
cr.Save ();
cr.Translate (
x + 0.5 + (width - cache.errorPixbuf.Width) / 2,
y + 0.5 + (height - cache.errorPixbuf.Height) / 2
);
Gdk.CairoHelper.SetSourcePixbuf (
cr,
errors.Any (e => e.IsError) ? cache.errorPixbuf : cache.warningPixbuf, 0, 0);
cr.Paint ();
cr.Restore ();
}
示例10: draw
static void draw (Cairo.Context gr, int width, int height)
{
int w, h;
ImageSurface image;
Matrix matrix;
SurfacePattern pattern;
gr.Scale (width, height);
gr.LineWidth = 0.04;
image = new ImageSurface ("data/e.png");
w = image.Width;
h = image.Height;
pattern = new SurfacePattern (image);
pattern.Extend = Cairo.Extend.Repeat;
gr.Translate (0.5, 0.5);
gr.Rotate (M_PI / 4);
gr.Scale (1 / Math.Sqrt (2), 1 / Math.Sqrt (2));
gr.Translate (- 0.5, - 0.5);
matrix = new Matrix ();
matrix.InitScale (w * 5.0, h * 5.0);
pattern.Matrix = matrix;
gr.Pattern = pattern;
gr.Rectangle ( new PointD (0, 0),
1.0, 1.0);
gr.Fill ();
pattern.Destroy ();
image.Destroy();
}
示例11: Gradient
public static void Gradient(Cairo.Context cr, Theme theme, Rect rect, double opacity)
{
cr.Save ();
cr.Translate (rect.X, rect.Y);
var x = rect.Width / 2.0;
var y = rect.Height / 2.0;
using (var grad = new Cairo.RadialGradient (x, y, 0, x, y, rect.Width / 2.0)) {
grad.AddColorStop (0, new Cairo.Color (0, 0, 0, 0.1 * opacity));
grad.AddColorStop (1, new Cairo.Color (0, 0, 0, 0.35 * opacity));
cr.SetSource (grad);
CairoExtensions.RoundedRectangle (cr, rect.X, rect.Y, rect.Width, rect.Height, theme.Context.Radius);
cr.Fill ();
}
cr.Restore ();
}
示例12: DrawLinePart
//.........这里部分代码省略.........
);
if (endY - startY > LineHeight) {
DrawRectangleWithRuler (
cr,
xPos,
new Cairo.Rectangle (xPos, startY + LineHeight, textEditor.Allocation.Width - xPos, endY - startY - LineHeight),
this.SelectionColor.Background,
true
);
}
DrawRectangleWithRuler (
cr,
xPos,
new Cairo.Rectangle (xPos, endY, endX, LineHeight),
this.SelectionColor.Background,
true
);
}
}
// highlight search results
TextSegment firstSearch;
int o = offset;
uint curIndex = 0, byteIndex = 0;
if (textEditor.HighlightSearchPattern) {
while (!(firstSearch = GetFirstSearchResult (o, offset + length)).IsInvalid) {
double x = position;
HandleSelection (lineOffset, logicalRulerColumn, selectionStartOffset, selectionEndOffset, System.Math.Max (lineOffset, firstSearch.Offset), System.Math.Min (lineOffset + line.Length, firstSearch.EndOffset), delegate(int start, int end) {
uint startIndex = (uint)(start - offset);
uint endIndex = (uint)(end - offset);
if (startIndex < endIndex && endIndex <= layout.LineChars.Length) {
uint startTranslated = TranslateToUTF8Index (layout.LineChars, startIndex, ref curIndex, ref byteIndex);
uint endTranslated = TranslateToUTF8Index (layout.LineChars, endIndex, ref curIndex, ref byteIndex);
int l, x1, x2;
layout.Layout.IndexToLineX ((int)startTranslated, false, out l, out x1);
layout.Layout.IndexToLineX ((int)endTranslated, false, out l, out x2);
int w = (int) System.Math.Ceiling ((x2 - x1) / Pango.Scale.PangoScale);
int s = (int) System.Math.Floor (x1 / Pango.Scale.PangoScale + x);
double corner = System.Math.Min (4, width) * textEditor.Options.Zoom;
cr.SetSourceColor (MainSearchResult.IsInvalid || MainSearchResult.Offset != firstSearch.Offset ? ColorStyle.SearchResult.Color : ColorStyle.SearchResultMain.Color);
FoldingScreenbackgroundRenderer.DrawRoundRectangle (cr, true, true, s, y, corner, w + 1, LineHeight);
cr.Fill ();
}
}, null);
o = System.Math.Max (firstSearch.EndOffset, o + 1);
}
}
cr.Save ();
cr.Translate (xPos, y);
cr.ShowLayout (layout.Layout);
cr.Restore ();
if (offset == line.Offset) {
DrawIndent (cr, layout, line, xPos, y);
}
if (textEditor.Options.ShowWhitespaces != ShowWhitespaces.Never && !(BackgroundRenderer != null && textEditor.Options.ShowWhitespaces == ShowWhitespaces.Selection))
DecorateTabsAndSpaces (cr, layout, offset, xPos, y, selectionStartOffset, selectionEndOffset);
if (textEditor.IsSomethingSelected && !isSelectionDrawn && BackgroundRenderer == null) {
示例13: DrawScaledSurfaceAt
protected void DrawScaledSurfaceAt(Cairo.Context gr, ImageSurface image, double x, double y, double height, double width)
{
//calculate proportional scaling
var img_height = image.Height;
var img_width = image.Width;
var width_ratio = (width) / (img_width);
var height_ratio = (height) / (img_height);
var scale_xy = Math.Min(height_ratio, width_ratio);
//scale image and add it
gr.Save();
gr.Scale(scale_xy, scale_xy);
gr.Translate(x, y);
gr.SetSource(image,(int)x, (int)y);
gr.Paint();
gr.Restore();
}
示例14: Draw
public void Draw (TextEditor editor, Cairo.Context g, int lineNr, Cairo.Rectangle lineArea)
{
EnsureLayoutCreated (editor);
int lineNumber = editor.Document.OffsetToLineNumber (lineSegment.Offset);
int errorNumber = lineNr - lineNumber;
double x = editor.TextViewMargin.XOffset;
double y = lineArea.Y;
double right = editor.Allocation.Width;
int errorCounterWidth = 0;
int ew = 0, eh = 0;
if (errors.Count > 1 && errorCountLayout != null) {
errorCountLayout.GetPixelSize (out ew, out eh);
errorCounterWidth = ew + 10;
}
double x2 = System.Math.Max (right - LayoutWidth - border - (ShowIconsInBubble ? errorPixbuf.Width : 0) - errorCounterWidth, fitsInSameLine ? editor.TextViewMargin.XOffset + editor.LineHeight / 2 : editor.TextViewMargin.XOffset);
// bool isEolSelected = editor.IsSomethingSelected && editor.SelectionMode != SelectionMode.Block ? editor.SelectionRange.Contains (lineSegment.Offset + lineSegment.EditableLength) : false;
int active = editor.Document.GetTextAt (lineSegment) == initialText ? 0 : 1;
bool isCaretInLine = lineSegment.Offset <= editor.Caret.Offset && editor.Caret.Offset <= lineSegment.EndOffset;
int highlighted = active == 0 && isCaretInLine ? 1 : 0;
int selected = 0;
LayoutDescriptor layout = layouts[errorNumber];
x2 = right - LayoutWidth - border - (ShowIconsInBubble ? errorPixbuf.Width : 0);
x2 -= errorCounterWidth;
x2 = System.Math.Max (x2, fitsInSameLine ? editor.TextViewMargin.XOffset + editor.LineHeight / 2 : editor.TextViewMargin.XOffset);
g.MoveTo (new Cairo.PointD (x2 + 0.5, y));
g.LineTo (new Cairo.PointD (x2 + 0.5, y + editor.LineHeight));
g.LineTo (new Cairo.PointD (right, y + editor.LineHeight));
g.LineTo (new Cairo.PointD (right, y));
g.ClosePath ();
g.Color = colorMatrix[active, BOTTOM, LIGHT, highlighted, selected];
g.Fill ();
g.Color = colorMatrix[active, BOTTOM, LINE, highlighted, selected];
g.MoveTo (new Cairo.PointD (x2 + 0.5, y));
g.LineTo (new Cairo.PointD (x2 + 0.5, y + editor.LineHeight));
if (errorNumber == errors.Count - 1)
g.LineTo (new Cairo.PointD (lineArea.X + lineArea.Width, y + editor.LineHeight));
g.Stroke ();
if (editor.Options.ShowRuler) {
double divider = Math.Max (editor.TextViewMargin.XOffset, x + editor.TextViewMargin.RulerX);
if (divider >= x2) {
g.MoveTo (new Cairo.PointD (divider + 0.5, y));
g.LineTo (new Cairo.PointD (divider + 0.5, y + editor.LineHeight));
g.Color = colorMatrix[active, BOTTOM, DARK, highlighted, selected];
g.Stroke ();
}
}
g.Save ();
g.Translate (x2 + (ShowIconsInBubble ? errorPixbuf.Width : 0) + border, y + (editor.LineHeight - layout.Height) / 2 + layout.Height % 2);
g.Color = selected == 0 ? gc : gcSelected;
g.ShowLayout (layout.Layout);
g.Restore ();
// if (ShowIconsInBubble)
// win.DrawPixbuf (editor.Style.BaseGC (Gtk.StateType.Normal), errors[errorNumber].IsError ? errorPixbuf : warningPixbuf, 0, 0, x2, y + (editor.LineHeight - errorPixbuf.Height) / 2, errorPixbuf.Width, errorPixbuf.Height, Gdk.RgbDither.None, 0, 0);
}
示例15: DrawBackground
//.........这里部分代码省略.........
g.LineTo (new Cairo.PointD (x2 + 0.5, y2Bottom));
} else {
g.MoveTo (new Cairo.PointD (x2 + 0.5, y2 - 1));
g.LineTo (new Cairo.PointD (x2 + 0.5, y2Bottom + 1));
}
g.Color = colorMatrix[active, BOTTOM, LINE, highlighted, selected];
g.Stroke ();
// stroke top line
if (fitsInSameLine) {
g.Color = colorMatrix[active, BOTTOM, LINE, highlighted, selected];
g.MoveTo (new Cairo.PointD (right, y2));
g.LineTo (new Cairo.PointD (x2 + 0.5, y2));
g.Stroke ();
}
}
if (editor.Options.ShowRuler) {
double divider = Math.Max (editor.TextViewMargin.XOffset, x + editor.TextViewMargin.RulerX);
if (divider >= x2) {
g.MoveTo (new Cairo.PointD (divider + 0.5, y2));
g.LineTo (new Cairo.PointD (divider + 0.5, y2Bottom));
g.Color = colorMatrix[active, BOTTOM, DARK, highlighted, selected];
g.Stroke ();
}
}
if (errors.Count > 1 && errorCountLayout != null) {
double rX = x2 + (ShowIconsInBubble ? errorPixbuf.Width : 0) + border + LayoutWidth;
double rY = y + editor.LineHeight / 6;
double rW = errorCounterWidth - 2;
double rH = editor.LineHeight * 3 / 4;
BookmarkMarker.DrawRoundRectangle (g, rX, rY, 8, rW, rH);
g.Color = oldIsOver ? new Cairo.Color (0.3, 0.3, 0.3) : new Cairo.Color (0.5, 0.5, 0.5);
g.Fill ();
if (CollapseExtendedErrors) {
g.Color = gcLight;
g.Save ();
g.Translate (x2 + (ShowIconsInBubble ? errorPixbuf.Width : 0) + border + LayoutWidth + 4, y + (editor.LineHeight - eh) / 2 + eh % 2);
g.ShowLayout (errorCountLayout);
g.Restore ();
} else {
g.MoveTo (rX + rW / 2 - rW / 4, rY + rH - rH / 4);
g.LineTo (rX + rW / 2 + rW / 4, rY + rH - rH / 4);
g.LineTo (rX + rW / 2, rY + rH / 4);
g.ClosePath ();
g.Color = new Cairo.Color (1, 1, 1);
g.Fill ();
}
}
for (int i = 0; i < layouts.Count; i++) {
LayoutDescriptor layout = layouts[i];
x2 = right - layout.Width - border - errorPixbuf.Width;
if (i == 0)
x2 -= errorCounterWidth;
x2 = System.Math.Max (x2, fitsInSameLine ? editor.TextViewMargin.XOffset + editor.LineHeight / 2 : editor.TextViewMargin.XOffset);
if (i > 0) {
editor.TextViewMargin.DrawRectangleWithRuler (g, x, new Cairo.Rectangle (x, y, right, editor.LineHeight), isEolSelected ? editor.ColorStyle.Selection.CairoBackgroundColor : editor.ColorStyle.Default.CairoBackgroundColor, true);
g.MoveTo (new Cairo.PointD (x2 + 0.5, y));
g.LineTo (new Cairo.PointD (x2 + 0.5, y + editor.LineHeight));
g.LineTo (new Cairo.PointD (right, y + editor.LineHeight));
g.LineTo (new Cairo.PointD (right, y));
g.ClosePath ();
if (CollapseExtendedErrors) {
Cairo.Gradient pat = new Cairo.LinearGradient (x2, y, x2, y + editor.LineHeight);
pat.AddColorStop (0, colorMatrix[active, TOP, LIGHT, highlighted, selected]);
pat.AddColorStop (1, colorMatrix[active, BOTTOM, LIGHT, highlighted, selected]);
g.Pattern = pat;
} else {
g.Color = colorMatrix[active, TOP, LIGHT, highlighted, selected];
}
g.Fill ();
if (editor.Options.ShowRuler) {
double divider = Math.Max (editor.TextViewMargin.XOffset, x + editor.TextViewMargin.RulerX);
if (divider >= x2) {
g.MoveTo (new Cairo.PointD (divider + 0.5, y));
g.LineTo (new Cairo.PointD (divider + 0.5, y + editor.LineHeight));
g.Color = colorMatrix[active, BOTTOM, DARK, highlighted, selected];
g.Stroke ();
}
}
}
int lw, lh;
layout.Layout.GetPixelSize (out lw, out lh);
g.Color = (HslColor)(selected == 0 ? gc : gcSelected);
g.Save ();
g.Translate (x2 + errorPixbuf.Width + border, y + (editor.LineHeight - layout.Height) / 2 + layout.Height % 2);
g.ShowLayout (layout.Layout);
g.Restore ();
y += editor.LineHeight;
if (!UseVirtualLines)
break;
}
return true;
}