本文整理汇总了C#中Gdk.GC.Copy方法的典型用法代码示例。如果您正苦于以下问题:C# GC.Copy方法的具体用法?C# GC.Copy怎么用?C# GC.Copy使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Gdk.GC
的用法示例。
在下文中一共展示了GC.Copy方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: RealizeHanlder
void RealizeHanlder (object o, EventArgs sender)
{
white_gc = Style.WhiteGC;
bkgr_gc = Style.BackgroundGC (StateType.Normal);
selection_gc = new Gdk.GC (GdkWindow);
selection_gc.Copy (Style.BackgroundGC (StateType.Normal));
Gdk.Color fgcol = new Gdk.Color ();
fgcol.Pixel = 0x000077ee;
selection_gc.Foreground = fgcol;
selection_gc.SetLineAttributes (3, LineStyle.Solid, CapStyle.NotLast, JoinStyle.Round);
}
示例2: Render
protected override void Render (Drawable window, Widget widget, Gdk.Rectangle background_area, Gdk.Rectangle cell_area, Gdk.Rectangle expose_area, CellRendererState flags)
{
if (isDisposed)
return;
if (diffMode) {
if (path.Equals (selctedPath)) {
selectedLine = -1;
selctedPath = null;
}
int w, maxy;
window.GetSize (out w, out maxy);
if (DrawLeft) {
cell_area.Width += cell_area.X - leftSpace;
cell_area.X = leftSpace;
}
var treeview = widget as FileTreeView;
var p = treeview != null? treeview.CursorLocation : null;
cell_area.Width -= RightPadding;
window.DrawRectangle (widget.Style.BaseGC (Gtk.StateType.Normal), true, cell_area.X, cell_area.Y, cell_area.Width - 1, cell_area.Height);
Gdk.GC normalGC = widget.Style.TextGC (StateType.Normal);
Gdk.GC removedGC = new Gdk.GC (window);
removedGC.Copy (normalGC);
removedGC.RgbFgColor = baseRemoveColor.AddLight (-0.3);
Gdk.GC addedGC = new Gdk.GC (window);
addedGC.Copy (normalGC);
addedGC.RgbFgColor = baseAddColor.AddLight (-0.3);
Gdk.GC infoGC = new Gdk.GC (window);
infoGC.Copy (normalGC);
infoGC.RgbFgColor = widget.Style.Text (StateType.Normal).AddLight (0.2);
Cairo.Context ctx = CairoHelper.Create (window);
Gdk.Color bgColor = new Gdk.Color (0,0,0);
// Rendering is done in two steps:
// 1) Get a list of blocks to render
// 2) render the blocks
int y = cell_area.Y + 2;
// cline keeps track of the current source code line (the one to jump to when double clicking)
int cline = 1;
bool inHeader = true;
BlockInfo currentBlock = null;
List<BlockInfo> blocks = new List<BlockInfo> ();
for (int n=0; n<lines.Length; n++, y += lineHeight) {
string line = lines [n];
if (line.Length == 0) {
currentBlock = null;
y -= lineHeight;
continue;
}
char tag = line [0];
if (line.StartsWith ("---") || line.StartsWith ("+++")) {
// Ignore this part of the header.
currentBlock = null;
y -= lineHeight;
continue;
}
if (tag == '@') {
int l = ParseCurrentLine (line);
if (l != -1) cline = l - 1;
inHeader = false;
} else if (tag != '-' && !inHeader)
cline++;
BlockType type;
bool hasBg = false;
switch (tag) {
case '-': type = BlockType.Removed; break;
case '+': type = BlockType.Added; break;
case '@': type = BlockType.Info; break;
default: type = BlockType.Unchanged; break;
}
if (currentBlock == null || type != currentBlock.Type) {
if (y > maxy)
break;
// Starting a new block. Mark section ends between a change block and a normal code block
if (currentBlock != null && IsChangeBlock (currentBlock.Type) && !IsChangeBlock (type))
currentBlock.SectionEnd = true;
currentBlock = new BlockInfo () {
YStart = y,
FirstLine = n,
Type = type,
SourceLineStart = cline,
SectionStart = (blocks.Count == 0 || !IsChangeBlock (blocks[blocks.Count - 1].Type)) && IsChangeBlock (type)
};
//.........这里部分代码省略.........
示例3: Render
protected override void Render (Drawable window, Widget widget, Gdk.Rectangle background_area, Gdk.Rectangle cell_area, Gdk.Rectangle expose_area, CellRendererState flags)
{
if (isDisposed)
return;
try {
if (diffMode) {
int w, maxy;
window.GetSize (out w, out maxy);
int recty = cell_area.Y;
int recth = cell_area.Height - 1;
if (recty < 0) {
recth += recty + 1;
recty = -1;
}
if (recth > maxy + 2)
recth = maxy + 2;
window.DrawRectangle (widget.Style.BaseGC (Gtk.StateType.Normal), true, cell_area.X, recty, cell_area.Width - 1, recth);
Gdk.GC normalGC = widget.Style.TextGC (StateType.Normal);
Gdk.GC removedGC = new Gdk.GC (window);
removedGC.Copy (normalGC);
removedGC.RgbFgColor = new Color (255, 0, 0);
Gdk.GC addedGC = new Gdk.GC (window);
addedGC.Copy (normalGC);
addedGC.RgbFgColor = new Color (0, 0, 255);
Gdk.GC infoGC = new Gdk.GC (window);
infoGC.Copy (normalGC);
infoGC.RgbFgColor = new Color (0xa5, 0x2a, 0x2a);
int y = cell_area.Y + 2;
for (int n = 0; n < lines.Length; n++,y += lineHeight) {
if (y + lineHeight < 0)
continue;
if (y > maxy)
break;
string line = lines[n];
if (line.Length == 0)
continue;
Gdk.GC gc;
switch (line[0]) {
case '-':
gc = removedGC;
break;
case '+':
gc = addedGC;
break;
case '@':
gc = infoGC;
break;
default:
gc = normalGC;
break;
}
layout.SetText (line);
window.DrawLayout (gc, cell_area.X + 2, y, layout);
}
window.DrawRectangle (widget.Style.DarkGC (Gtk.StateType.Prelight), false, cell_area.X, recty, cell_area.Width - 1, recth);
removedGC.Dispose ();
addedGC.Dispose ();
infoGC.Dispose ();
} else {
int y = cell_area.Y + (cell_area.Height - height) / 2;
window.DrawLayout (widget.Style.TextGC (GetState (flags)), cell_area.X, y, layout);
}
} catch (Exception e) {
Console.WriteLine (e);
}
}
示例4: Render
protected override void Render (Drawable window, Widget widget, Gdk.Rectangle background_area, Gdk.Rectangle cell_area, Gdk.Rectangle expose_area, CellRendererState flags)
{
if (isDisposed)
return;
if (diffMode) {
if (path.Equals (selctedPath)) {
selectedLine = -1;
selctedPath = null;
}
int w, maxy;
window.GetSize (out w, out maxy);
var treeview = widget as FileTreeView;
var p = treeview != null? treeview.CursorLocation : null;
int recty = cell_area.Y;
int recth = cell_area.Height - 1;
if (recty < 0) {
recth += recty + 1;
recty = -1;
}
if (recth > maxy + 2)
recth = maxy + 2;
window.DrawRectangle (widget.Style.BaseGC (Gtk.StateType.Normal), true, cell_area.X, recty, cell_area.Width - 1, recth);
Gdk.GC normalGC = widget.Style.TextGC (StateType.Normal);
Gdk.GC removedGC = new Gdk.GC (window);
removedGC.Copy (normalGC);
removedGC.RgbFgColor = new Color (255, 0, 0);
Gdk.GC addedGC = new Gdk.GC (window);
addedGC.Copy (normalGC);
addedGC.RgbFgColor = new Color (0, 0, 255);
Gdk.GC infoGC = new Gdk.GC (window);
infoGC.Copy (normalGC);
infoGC.RgbFgColor = new Color (0xa5, 0x2a, 0x2a);
int y = cell_area.Y + 2;
int cline = 1;
bool inHeader = true;
for (int n=0; n<lines.Length; n++, y += lineHeight) {
string line = lines [n];
if (line.Length == 0)
continue;
char tag = line [0];
// Keep track of the real file line
int thisLine = cline;
if (tag == '@') {
int l = ParseCurrentLine (line);
if (l != -1) cline = thisLine = l;
inHeader = false;
} else if (tag != '-' && !inHeader)
cline++;
if (y + lineHeight < 0)
continue;
if (y > maxy)
break;
Gdk.GC gc;
switch (tag) {
case '-': gc = removedGC; break;
case '+': gc = addedGC; break;
case '@': gc = infoGC; break;
default: gc = normalGC; break;
}
if (p.HasValue && p.Value.X >= cell_area.X && p.Value.X <= cell_area.Right && p.Value.Y >= y && p.Value.Y < y + lineHeight) {
window.DrawRectangle (widget.Style.BaseGC (Gtk.StateType.Prelight), true, cell_area.X, y, cell_area.Width - 1, lineHeight);
selectedLine = thisLine;
selctedPath = path;
}
layout.SetText (line);
window.DrawLayout (gc, cell_area.X + 2, y, layout);
}
window.DrawRectangle (widget.Style.DarkGC (Gtk.StateType.Prelight), false, cell_area.X, recty, cell_area.Width - 1, recth);
removedGC.Dispose ();
addedGC.Dispose ();
infoGC.Dispose ();
} else {
int y = cell_area.Y + (cell_area.Height - height)/2;
window.DrawLayout (widget.Style.TextGC (GetState(flags)), cell_area.X, y, layout);
}
}
示例5: RenderPlaceholderText_internal
static void RenderPlaceholderText_internal (Gtk.Widget widget, Gtk.ExposeEventArgs args, string placeHolderText, ref Pango.Layout layout, float xalign, float yalign, int xpad, int ypad)
{
if (layout == null) {
layout = new Pango.Layout (widget.PangoContext);
layout.FontDescription = widget.PangoContext.FontDescription.Copy ();
}
int wh, ww;
args.Event.Window.GetSize (out ww, out wh);
int width, height;
layout.SetText (placeHolderText);
layout.GetPixelSize (out width, out height);
int x = xpad + (int)((ww - width) * xalign);
int y = ypad + (int)((wh - height) * yalign);
using (var gc = new Gdk.GC (args.Event.Window)) {
gc.Copy (widget.Style.TextGC (Gtk.StateType.Normal));
Xwt.Drawing.Color color_a = widget.Style.Base (Gtk.StateType.Normal).ToXwtValue ();
Xwt.Drawing.Color color_b = widget.Style.Text (Gtk.StateType.Normal).ToXwtValue ();
gc.RgbFgColor = color_b.BlendWith (color_a, 0.5).ToGtkValue ();
args.Event.Window.DrawLayout (gc, x, y, layout);
}
}
示例6: DrawMove
private void DrawMove(Gdk.Window window)
{
Gdk.GC gc = Style.ForegroundGC (StateType.Normal);
if (info.stage == MoveStage.Start)
{
int x = start_x +
info.start.x * (space + size);
int y = start_y +
info.start.y * (space + size);
window.DrawRectangle (gc, false, x, y,
size, size);
}
if (info.cursorVisible)
{
Gdk.GC tempGC = new Gdk.GC (window);
tempGC.Copy (gc);
tempGC.SetLineAttributes (1,
LineStyle.
OnOffDash, 0, 0);
int x = start_x +
info.cursor.x * (space + size);
int y = start_y +
info.cursor.y * (space + size);
window.DrawRectangle (tempGC, false, x, y,
size, size);
}
return;
}
示例7: DrawLastMove
protected virtual void DrawLastMove(Gdk.Window window)
{
if (lastMove == null)
return;
int i = -1, j = -1;
string letters = "abcdefgh";
string numbers = "87654321";
int k = lastMove.Length - 2;
while (k >= 0)
{
i = letters.IndexOf (lastMove[k]);
j = numbers.IndexOf (lastMove[k + 1]);
if (i >= 0 && j >= 0)
break;
k--;
}
if (i == -1 || j == -1)
return;
Gdk.GC gc = Style.ForegroundGC (StateType.Normal);
Gdk.GC tempGC = new Gdk.GC (window);
tempGC.Copy (gc);
tempGC.SetLineAttributes (2, LineStyle.OnOffDash,
CapStyle.Round, 0);
if (side)
{
i = 7 - i;
j = 7 - j;
}
int x = start_x + i * (space + size);
int y = start_y + j * (space + size);
window.DrawRectangle (tempGC, false, x, y, size,
size);
}
示例8: DrawEOLMarker
float DrawEOLMarker(Gdk.Drawable g, System.Drawing.Color color, Gdk.GC gc, float x, float y)
{
//string EOLMarker = "\u00B6";
string EOLMarker = "|";
float width = MeasureString(FontContainer.DefaultFont, EOLMarker);
g.DrawRectangle(gc, true,
new Gdk.Rectangle((int)Math.Round(x), (int) Math.Round(y), (int) Math.Round(width), fontHeight));
HighlightColor eolMarkerColor = textArea.Document.HighlightingStrategy.GetColorFor("EolMarker");
//g.DrawString("\u00B6", eolMarkerColor.Font, new SolidBrush(color), x, y, measureStringFormat);
using (Gdk.GC tgc = new Gdk.GC(g)) {
tgc.Copy(gc);
tgc.RgbFgColor = new Gdk.Color(eolMarkerColor.Color);
return DrawString(g, tgc, x, y, EOLMarker);
}
}
示例9: DrawDocumentWord
// FIXME: draw the whole line using Pango
float DrawDocumentWord(Gdk.Drawable g, string word, PointF position, Pango.FontDescription font, System.Drawing.Color foreColor, Gdk.GC gc)
{
if (word == null || word.Length == 0) {
return 0f;
}
float wordWidth = MeasureString(font, word);
g.DrawRectangle(gc, true, new Gdk.Rectangle((int) Math.Abs(position.X), (int) position.Y, (int) Math.Abs(wordWidth), (int) Math.Abs(FontHeight)));
using (Gdk.GC tgc = new Gdk.GC(g)) {
tgc.Copy(gc);
tgc.RgbFgColor = new Gdk.Color(foreColor);
return DrawString(g, tgc, position.X, position.Y, word);
}
}