本文整理汇总了C#中Cairo.Context.ResetClip方法的典型用法代码示例。如果您正苦于以下问题:C# Context.ResetClip方法的具体用法?C# Context.ResetClip怎么用?C# Context.ResetClip使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Cairo.Context
的用法示例。
在下文中一共展示了Context.ResetClip方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: 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 ();
}
示例2: Draw
void Draw (Context ctx)
{
int tabArea = tabEndX - tabStartX;
int x = GetRenderOffset ();
const int y = 0;
int n = 0;
Action<Context> drawActive = c => {
};
var drawCommands = new List<Action<Context>> ();
for (; n < notebook.Tabs.Count; n++) {
if (x + TabWidth < tabStartX) {
x += TabWidth;
continue;
}
if (x > tabEndX)
break;
int closingWidth;
var cmd = DrawClosingTab (n, new Gdk.Rectangle (x, y, 0, Allocation.Height), out closingWidth);
drawCommands.Add (cmd);
x += closingWidth;
var tab = (DockNotebookTab)notebook.Tabs [n];
bool active = tab == notebook.CurrentTab;
int width = Math.Min (TabWidth, Math.Max (50, tabEndX - x - 1));
if (tab == notebook.Tabs.Last ())
width += LastTabWidthAdjustment;
width = (int)(width * tab.WidthModifier);
if (active) {
int tmp = x;
drawActive = c => DrawTab (c, tab, Allocation, new Gdk.Rectangle (tmp, y, width, Allocation.Height), true, true, draggingTab, CreateTabLayout (tab));
tab.Allocation = new Gdk.Rectangle (tmp, Allocation.Y, width, Allocation.Height);
} else {
int tmp = x;
bool highlighted = tab == highlightedTab;
if (tab.SaveStrength > 0.0f) {
tmp = (int)(tab.SavedAllocation.X + (tmp - tab.SavedAllocation.X) * (1.0f - tab.SaveStrength));
}
drawCommands.Add (c => DrawTab (c, tab, Allocation, new Gdk.Rectangle (tmp, y, width, Allocation.Height), highlighted, false, false, CreateTabLayout (tab)));
tab.Allocation = new Gdk.Rectangle (tmp, Allocation.Y, width, Allocation.Height);
}
x += width;
}
var allocation = Allocation;
int tabWidth;
drawCommands.Add (DrawClosingTab (n, new Gdk.Rectangle (x, y, 0, allocation.Height), out tabWidth));
drawCommands.Reverse ();
DrawBackground (ctx, allocation);
// Draw breadcrumb bar header
if (notebook.Tabs.Count > 0) {
ctx.Rectangle (0, allocation.Height - BottomBarPadding, allocation.Width, BottomBarPadding);
ctx.SetSourceColor (Styles.BreadcrumbBackgroundColor);
ctx.Fill ();
}
ctx.Rectangle (tabStartX - LeanWidth / 2, allocation.Y, tabArea + LeanWidth, allocation.Height);
ctx.Clip ();
foreach (var cmd in drawCommands)
cmd (ctx);
ctx.ResetClip ();
// Redraw the dragging tab here to be sure its on top. We drew it before to get the sizing correct, this should be fixed.
drawActive (ctx);
}
示例3: ClippedRender
protected override void ClippedRender(Context cr)
{
if (!EnsureLayout ()) {
return;
}
Brush foreground = Foreground;
if (!foreground.IsValid) {
return;
}
cr.Rectangle (0, 0, RenderSize.Width, RenderSize.Height);
cr.Clip ();
bool fade = text_alloc.Width > RenderSize.Width;
if (fade) {
cr.PushGroup ();
}
cr.MoveTo (text_alloc.X, text_alloc.Y);
Foreground.Apply (cr);
Pango.CairoHelper.ShowLayout (cr, layout);
cr.Fill ();
if (fade) {
LinearGradient mask = new LinearGradient (RenderSize.Width - 20, 0, RenderSize.Width, 0);
mask.AddColorStop (0, new Color (0, 0, 0, 1));
mask.AddColorStop (1, new Color (0, 0, 0, 0));
cr.PopGroupToSource ();
cr.Mask (mask);
mask.Destroy ();
}
cr.ResetClip ();
}