本文整理汇总了C#中System.Windows.Forms.VisualStyles.VisualStyleRenderer.GetBackgroundContentRectangle方法的典型用法代码示例。如果您正苦于以下问题:C# VisualStyleRenderer.GetBackgroundContentRectangle方法的具体用法?C# VisualStyleRenderer.GetBackgroundContentRectangle怎么用?C# VisualStyleRenderer.GetBackgroundContentRectangle使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Windows.Forms.VisualStyles.VisualStyleRenderer
的用法示例。
在下文中一共展示了VisualStyleRenderer.GetBackgroundContentRectangle方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: OnPaint
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
if(g == null) { base.OnPaint(e); return; }
int nNormalizedPos = m_nPosition - m_nMinimum;
int nNormalizedMax = m_nMaximum - m_nMinimum;
Rectangle rectClient = this.ClientRectangle;
Rectangle rectDraw;
if(VisualStyleRenderer.IsSupported)
{
VisualStyleRenderer vsr = new VisualStyleRenderer(
VisualStyleElement.ProgressBar.Bar.Normal);
vsr.DrawBackground(g, rectClient);
rectDraw = vsr.GetBackgroundContentRectangle(g, rectClient);
}
else
{
g.FillRectangle(SystemBrushes.Control, rectClient);
g.DrawLine(Pens.Gray, 0, 0, rectClient.Width - 1, 0);
g.DrawLine(Pens.Gray, 0, 0, 0, rectClient.Height - 1);
g.DrawLine(Pens.White, rectClient.Width - 1, 0,
rectClient.Width - 1, rectClient.Height - 1);
g.DrawLine(Pens.White, 0, rectClient.Height - 1,
rectClient.Width - 1, rectClient.Height - 1);
rectDraw = new Rectangle(rectClient.X + 1, rectClient.Y + 1,
rectClient.Width - 2, rectClient.Height - 2);
}
Rectangle rectGradient = new Rectangle(rectDraw.X, rectDraw.Y,
rectDraw.Width, rectDraw.Height);
if((rectGradient.Width & 1) == 0) ++rectGradient.Width;
int nDrawWidth = (int)((float)rectDraw.Width * ((float)nNormalizedPos /
(float)nNormalizedMax));
Color clrStart = Color.FromArgb(255, 128, 0);
Color clrEnd = Color.FromArgb(0, 255, 0);
bool bRtl = (this.RightToLeft == RightToLeft.Yes);
if(bRtl)
{
Color clrTemp = clrStart;
clrStart = clrEnd;
clrEnd = clrTemp;
}
using(LinearGradientBrush brush = new LinearGradientBrush(rectGradient,
clrStart, clrEnd, LinearGradientMode.Horizontal))
{
g.FillRectangle(brush, (bRtl ? (rectDraw.Width - nDrawWidth + 1) :
rectDraw.Left), rectDraw.Top, nDrawWidth, rectDraw.Height);
}
}
示例2: OnPaintBackground
/// <summary>
/// Paints the background.
/// </summary>
/// <param name="e">A PaintEventArgs that contains the event data.</param>
protected override void OnPaintBackground(PaintEventArgs pevent)
{
switch (_borderStyle)
{
case BorderStyle.Fixed3D:
{
if (TextBoxRenderer.IsSupported)
{
VisualStyleElement state = VisualStyleElement.TextBox.TextEdit.Normal;
Color backColor = BackColor;
if (Enabled)
{
if (ReadOnly)
state = VisualStyleElement.TextBox.TextEdit.ReadOnly;
else if (Focused)
state = VisualStyleElement.TextBox.TextEdit.Focused;
}
else
{
state = VisualStyleElement.TextBox.TextEdit.Disabled;
backColor = BackColorDisabled;
}
var vsr = new VisualStyleRenderer(state);
vsr.DrawBackground(pevent.Graphics, ClientRectangle);
Rectangle rectContent = vsr.GetBackgroundContentRectangle(pevent.Graphics, ClientRectangle);
pevent.Graphics.FillRectangle(new SolidBrush(backColor), rectContent);
}
else
{
// draw background
pevent.Graphics.FillRectangle(new SolidBrush(BackColor), ClientRectangle);
// draw default border
ControlPaint.DrawBorder3D(pevent.Graphics, ClientRectangle, Border3DStyle.Sunken);
}
break;
}
case BorderStyle.FixedSingle:
{
// draw background
pevent.Graphics.FillRectangle(new SolidBrush(BackColor), ClientRectangle);
// draw fixed single border
ControlPaint.DrawBorder(pevent.Graphics, ClientRectangle, Color.Black, ButtonBorderStyle.Solid);
break;
}
}
}
示例3: OnPaintBackground
/// <summary>
/// Paints the background.
/// </summary>
/// <param name="e">A PaintEventArgs that contains the event data.</param>
protected override void OnPaintBackground( PaintEventArgs e )
{
if( _vertGridPen == null )
this.SetupGraphics();
switch( _borderStyle )
{
case BorderStyle.Fixed3D:
{
if( TextBoxRenderer.IsSupported )
{
VisualStyleElement state = VisualStyleElement.TextBox.TextEdit.Normal;
Color backColor = this.BackColor;
if( this.Enabled )
{
if( this.ReadOnly )
state = VisualStyleElement.TextBox.TextEdit.ReadOnly;
else if( this.Focused )
state = VisualStyleElement.TextBox.TextEdit.Focused;
}
else
{
state = VisualStyleElement.TextBox.TextEdit.Disabled;
backColor = this.BackColorDisabled;
}
VisualStyleRenderer vsr = new VisualStyleRenderer( state );
vsr.DrawBackground( e.Graphics, this.ClientRectangle );
Rectangle rectContent = vsr.GetBackgroundContentRectangle( e.Graphics, this.ClientRectangle );
e.Graphics.FillRectangle( new SolidBrush( backColor ), rectContent );
this.DrawShared( e );
}
else
{
// draw background
e.Graphics.FillRectangle( new SolidBrush( BackColor ), ClientRectangle );
this.DrawShared( e );
// draw default border
ControlPaint.DrawBorder3D( e.Graphics, ClientRectangle, Border3DStyle.Sunken );
}
break;
}
case BorderStyle.FixedSingle:
{
// draw background
e.Graphics.FillRectangle( new SolidBrush( BackColor ), ClientRectangle );
this.DrawShared( e );
// draw fixed single border
ControlPaint.DrawBorder( e.Graphics, ClientRectangle, Color.Black, ButtonBorderStyle.Solid );
break;
}
}
}
示例4: OnPaintBackground
protected override void OnPaintBackground( PaintEventArgs e )
{
Brush backBrush = ( this.Enabled == true ) ? _instrBrush : _vizBrush;
if( TextBoxRenderer.IsSupported )
{
VisualStyleElement state = ( this.Enabled == true ) ? VisualStyleElement.TextBox.TextEdit.Normal : VisualStyleElement.TextBox.TextEdit.Disabled;
VisualStyleRenderer vsr = new VisualStyleRenderer( state );
vsr.DrawBackground( e.Graphics, this.ClientRectangle );
Rectangle rectContent = vsr.GetBackgroundContentRectangle( e.Graphics, this.ClientRectangle );
e.Graphics.FillRectangle( backBrush, rectContent );
this.DrawShared( e );
}
else
{
e.Graphics.FillRectangle( backBrush, this.ClientRectangle );
this.DrawShared( e );
ControlPaint.DrawBorder3D( e.Graphics, this.ClientRectangle, Border3DStyle.Sunken );
}
}
示例5: DrawProgressBar
public override void DrawProgressBar (Graphics dc, Rectangle clip_rect, ProgressBar ctrl)
{
if (!RenderClientAreas ||
!VisualStyleRenderer.IsElementDefined (VisualStyleElement.ProgressBar.Bar.Normal) ||
!VisualStyleRenderer.IsElementDefined (VisualStyleElement.ProgressBar.Chunk.Normal)) {
base.DrawProgressBar (dc, clip_rect, ctrl);
return;
}
VisualStyleRenderer renderer = new VisualStyleRenderer (VisualStyleElement.ProgressBar.Bar.Normal);
renderer.DrawBackground (dc, ctrl.ClientRectangle, clip_rect);
Rectangle client_area = renderer.GetBackgroundContentRectangle (dc, new Rectangle (Point.Empty, ctrl.Size));
renderer = new VisualStyleRenderer (VisualStyleElement.ProgressBar.Chunk.Normal);
/* Draw Blocks */
int draw_mode = 0;
int max_blocks = int.MaxValue;
int start_pixel = client_area.X;
#if NET_2_0
draw_mode = (int)ctrl.Style;
#endif
switch (draw_mode) {
#if NET_2_0
case 1: // Continuous
client_area.Width = (int)(client_area.Width * ((double)(ctrl.Value - ctrl.Minimum) / (double)(Math.Max (ctrl.Maximum - ctrl.Minimum, 1))));
renderer.DrawBackground (dc, client_area, clip_rect);
break;
case 2: // Marquee
int ms_diff = (int)(DateTime.Now - ctrl.start).TotalMilliseconds;
double percent_done = (double)ms_diff % (double)ctrl.MarqueeAnimationSpeed / (double)ctrl.MarqueeAnimationSpeed;
max_blocks = 5;
start_pixel = client_area.X + (int)(client_area.Width * percent_done);
goto default;
#endif
default: // Blocks
int block_width = renderer.GetInteger (IntegerProperty.ProgressChunkSize);
block_width = Math.Max (block_width, 0); // block_width is used to break out the loop below, it must be >= 0!
int first_pixel_outside_filled_area = (int)(((double)(ctrl.Value - ctrl.Minimum) * client_area.Width) / (Math.Max (ctrl.Maximum - ctrl.Minimum, 1))) + client_area.X;
int block_count = 0;
int increment = block_width + renderer.GetInteger (IntegerProperty.ProgressSpaceSize);
Rectangle block_rect = new Rectangle (start_pixel, client_area.Y, block_width, client_area.Height);
while (true) {
if (max_blocks != int.MaxValue) {
if (block_count == max_blocks)
break;
if (block_rect.Right >= client_area.Width)
block_rect.X -= client_area.Width;
} else {
if (block_rect.X >= first_pixel_outside_filled_area)
break;
if (block_rect.Right >= first_pixel_outside_filled_area)
if (first_pixel_outside_filled_area == client_area.Right)
block_rect.Width = first_pixel_outside_filled_area - block_rect.X;
else
break;
}
if (clip_rect.IntersectsWith (block_rect))
renderer.DrawBackground (dc, block_rect, clip_rect);
block_rect.X += increment;
block_count++;
}
break;
}
}
示例6: OnPaintBackground
protected override void OnPaintBackground(PaintEventArgs e)
{
switch (_borderStyle)
{
case BorderStyle.FixedSingle:
e.Graphics.FillRectangle((Brush)new SolidBrush(BackColor), ClientRectangle);
ControlPaint.DrawBorder(e.Graphics, ClientRectangle, Color.Black, ButtonBorderStyle.Solid);
break;
case BorderStyle.Fixed3D:
if (TextBoxRenderer.IsSupported)
{
VisualStyleElement element = VisualStyleElement.TextBox.TextEdit.Normal;
Color color = BackColor;
if (Enabled)
{
if (ReadOnly)
element = VisualStyleElement.TextBox.TextEdit.ReadOnly;
else if (Focused)
element = VisualStyleElement.TextBox.TextEdit.Focused;
}
else
{
element = VisualStyleElement.TextBox.TextEdit.Disabled;
color = BackColorDisabled;
}
VisualStyleRenderer visualStyleRenderer = new VisualStyleRenderer(element);
visualStyleRenderer.DrawBackground((IDeviceContext)e.Graphics, ClientRectangle);
Rectangle contentRectangle = visualStyleRenderer.GetBackgroundContentRectangle((IDeviceContext)e.Graphics, ClientRectangle);
e.Graphics.FillRectangle((Brush)new SolidBrush(color), contentRectangle);
break;
}
e.Graphics.FillRectangle((Brush)new SolidBrush(BackColor), ClientRectangle);
ControlPaint.DrawBorder3D(e.Graphics, ClientRectangle, Border3DStyle.Sunken);
break;
}
}
示例7: CalculateNonClientSize
private void CalculateNonClientSize(ref Message m)
{
NativeMethods.NCCALCSIZE_PARAMS parameters;
NativeMethods.RECT windowRect;
ExtractParamsAndWindowRect(ref m, out parameters, out windowRect);
var renderer = new VisualStyleRenderer(VisualStyleElement.TextBox.TextEdit.Normal);
using (var deviceContext = new NativeMethods.DeviceContext(Handle))
{
var contentRect = new NativeMethods.RECT(
renderer.GetBackgroundContentRectangle(deviceContext, windowRect.ToRectangle()));
contentRect.Inflate(-1, -1);
_borderRect = new NativeMethods.RECT(
contentRect.Left - windowRect.Left,
contentRect.Top - windowRect.Top,
windowRect.Right - contentRect.Right,
windowRect.Bottom - contentRect.Bottom);
if (m.WParam == IntPtr.Zero)
Marshal.StructureToPtr(contentRect, m.LParam, false);
else
{
parameters.rgrc0 = contentRect;
Marshal.StructureToPtr(parameters, m.LParam, false);
}
}
m.Result = new IntPtr(NativeMethods.WVR_REDRAW);
}
示例8: PaintPriv
private void PaintPriv(PaintEventArgs e)
{
Graphics g = e.Graphics;
if(g == null) { base.OnPaint(e); return; }
int nNormPos = m_nPosition - m_nMinimum;
int nNormMax = m_nMaximum - m_nMinimum;
if(nNormMax <= 0) { Debug.Assert(false); nNormMax = 100; }
if(nNormPos < 0) { Debug.Assert(false); nNormPos = 0; }
if(nNormPos > nNormMax) { Debug.Assert(false); nNormPos = nNormMax; }
Rectangle rectClient = this.ClientRectangle;
Rectangle rectDraw;
VisualStyleElement vse = VisualStyleElement.ProgressBar.Bar.Normal;
if(VisualStyleRenderer.IsSupported &&
VisualStyleRenderer.IsElementDefined(vse))
{
VisualStyleRenderer vsr = new VisualStyleRenderer(vse);
if(vsr.IsBackgroundPartiallyTransparent())
vsr.DrawParentBackground(g, rectClient, this);
vsr.DrawBackground(g, rectClient);
rectDraw = vsr.GetBackgroundContentRectangle(g, rectClient);
}
else
{
g.FillRectangle(SystemBrushes.Control, rectClient);
Pen penGray = SystemPens.ControlDark;
Pen penWhite = SystemPens.ControlLight;
g.DrawLine(penGray, 0, 0, rectClient.Width - 1, 0);
g.DrawLine(penGray, 0, 0, 0, rectClient.Height - 1);
g.DrawLine(penWhite, rectClient.Width - 1, 0,
rectClient.Width - 1, rectClient.Height - 1);
g.DrawLine(penWhite, 0, rectClient.Height - 1,
rectClient.Width - 1, rectClient.Height - 1);
rectDraw = new Rectangle(rectClient.X + 1, rectClient.Y + 1,
rectClient.Width - 2, rectClient.Height - 2);
}
int nDrawWidth = (int)((float)rectDraw.Width * (float)nNormPos /
(float)nNormMax);
Color clrStart = Color.FromArgb(255, 128, 0);
Color clrEnd = Color.FromArgb(0, 255, 0);
if(!this.Enabled)
{
clrStart = UIUtil.ColorToGrayscale(SystemColors.ControlDark);
clrEnd = UIUtil.ColorToGrayscale(SystemColors.ControlLight);
}
bool bRtl = (this.RightToLeft == RightToLeft.Yes);
if(bRtl)
{
Color clrTemp = clrStart;
clrStart = clrEnd;
clrEnd = clrTemp;
}
// Workaround for Windows <= XP
Rectangle rectGrad = new Rectangle(rectDraw.X, rectDraw.Y,
rectDraw.Width, rectDraw.Height);
if(!WinUtil.IsAtLeastWindowsVista && !NativeLib.IsUnix())
rectGrad.Inflate(1, 0);
using(LinearGradientBrush brush = new LinearGradientBrush(rectGrad,
clrStart, clrEnd, LinearGradientMode.Horizontal))
{
g.FillRectangle(brush, (bRtl ? (rectDraw.Width - nDrawWidth + 1) :
rectDraw.Left), rectDraw.Top, nDrawWidth, rectDraw.Height);
}
PaintText(g, rectDraw);
}
示例9: OnPaintBackground
protected override void OnPaintBackground(PaintEventArgs e)
{
VisualStyleElement normal;
Color backColor;
switch (this._borderStyle)
{
case System.Windows.Forms.BorderStyle.FixedSingle:
e.Graphics.FillRectangle(new SolidBrush(this.BackColor), base.ClientRectangle);
ControlPaint.DrawBorder(e.Graphics, base.ClientRectangle, Color.Black, ButtonBorderStyle.Solid);
return;
case System.Windows.Forms.BorderStyle.Fixed3D:
if (!TextBoxRenderer.IsSupported)
{
e.Graphics.FillRectangle(new SolidBrush(this.BackColor), base.ClientRectangle);
ControlPaint.DrawBorder3D(e.Graphics, base.ClientRectangle, Border3DStyle.Sunken);
return;
}
normal = VisualStyleElement.TextBox.TextEdit.Normal;
backColor = this.BackColor;
if (!base.Enabled)
{
normal = VisualStyleElement.TextBox.TextEdit.Disabled;
backColor = this.BackColorDisabled;
break;
}
if (!this.ReadOnly)
{
if (this.Focused)
{
normal = VisualStyleElement.TextBox.TextEdit.Focused;
}
break;
}
normal = VisualStyleElement.TextBox.TextEdit.ReadOnly;
break;
default:
return;
}
VisualStyleRenderer renderer = new VisualStyleRenderer(normal);
renderer.DrawBackground(e.Graphics, base.ClientRectangle);
Rectangle backgroundContentRectangle = renderer.GetBackgroundContentRectangle(e.Graphics, base.ClientRectangle);
e.Graphics.FillRectangle(new SolidBrush(backColor), backgroundContentRectangle);
}