本文整理汇总了C#中System.Image.GetClip方法的典型用法代码示例。如果您正苦于以下问题:C# Image.GetClip方法的具体用法?C# Image.GetClip怎么用?C# Image.GetClip使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Image
的用法示例。
在下文中一共展示了Image.GetClip方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: RenderCorner
/// <summary>
/// Renders a corner gradient between the given colors. Includes outColor in the gradient but not inColor.
/// </summary>
/// <param name="image">The image to render to.</param>
/// <param name="reverseX">True to reverse the gradient in the x direction.</param>
/// <param name="reverseY">True to reverse the gradient in the y direction.</param>
/// <param name="area">The area to fill.</param>
/// <param name="outColor">The "outer" color.</param>
/// <param name="inColor">The "inner" color.</param>
/// <param name="roundEdges">True to round the corner, false for square.</param>
/// <param name="interp">The interpolation function to use.</param>
private static void RenderCorner(Image image, bool reverseX, bool reverseY, Rectangle area, ARGB outColor, ARGB inColor, bool roundEdges, InterpFunction interp)
{
Rectangle clip = ShapeUtil.Overlap((Rectangle)image.Size, image.GetClip(), area);
if(clip.IsValid())
{
for(int i = clip.Min.X; i <= clip.Max.X; i++)
{
for(int j = clip.Min.Y; j <= clip.Max.Y; j++)
{
double dx;
double dy;
if(reverseX) dx = i - area.Min.X;
else dx = area.Max.X - i;
if(reverseY) dy = j - area.Min.Y;
else dy = area.Max.Y - j;
dx++;
dx /= area.Width;
dy++;
dy /= area.Height;
double mu;
if(roundEdges)
{
mu = Math.Sqrt(dx * dx + dy * dy);
}else
{
mu = Math.Max(Math.Abs(dx), Math.Abs(dy));
}
mu = Util.Clip(mu, 0, 1);
image[i, j] = ColorUtil.Interpolate(inColor, outColor, mu, interp);
}
}
}
}
示例2: RenderYSide
/// <summary>
/// Renders a y-oriented gradient between the given colors. Includes outColor in the gradient but not inColor.
/// </summary>
/// <param name="image">The image to render to.</param>
/// <param name="reverse">True to reverse the gradient.</param>
/// <param name="area">The area to fill.</param>
/// <param name="outColor">The "outer" color.</param>
/// <param name="inColor">The "inner" color.</param>
/// <param name="interp">The interpolation function to use.</param>
private static void RenderYSide(Image image, bool reverse, Rectangle area, ARGB outColor, ARGB inColor, InterpFunction interp)
{
Rectangle clip = ShapeUtil.Overlap((Rectangle)image.Size, image.GetClip(), area);
if(clip.IsValid())
{
for(int j = clip.Min.Y; j <= clip.Max.Y; j++)
{
double mu;
if(reverse) mu = j - area.Min.Y;
else mu = area.Max.Y - j;
mu++;
mu /= area.Height;
mu = Util.Clip(mu, 0, 1);
image.RenderSolid(new Rectangle{Min = new Point2D(clip.Min.X, j), Max = new Point2D(clip.Max.X, j)}, ColorUtil.Interpolate(inColor, outColor, mu, interp));
}
}
}