本文整理汇总了C#中PdfSharp.Drawing.XMatrix.Multiply方法的典型用法代码示例。如果您正苦于以下问题:C# XMatrix.Multiply方法的具体用法?C# XMatrix.Multiply怎么用?C# XMatrix.Multiply使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PdfSharp.Drawing.XMatrix
的用法示例。
在下文中一共展示了XMatrix.Multiply方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DrawWorld
private static void DrawWorld(RenderContext ctx, FontCache styleRes, World world, WorldLayer layer)
{
bool isPlaceholder = world.IsPlaceholder;
bool isCapital = world.IsCapital;
bool isHiPop = world.IsHi;
bool renderName = ctx.styles.worldDetails.HasFlag(WorldDetails.AllNames) ||
(ctx.styles.worldDetails.HasFlag(WorldDetails.KeyNames) && (isCapital || isHiPop));
bool renderUWP = ctx.styles.worldDetails.HasFlag(WorldDetails.Uwp);
using (RenderUtil.SaveState(ctx.graphics))
{
XPen pen = new XPen(XColor.Empty);
XSolidBrush solidBrush = new XSolidBrush();
ctx.graphics.SmoothingMode = XSmoothingMode.AntiAlias;
// Center on the parsec
PointF center = Astrometrics.HexToCenter(world.Coordinates);
XMatrix matrix = new XMatrix();
matrix.TranslatePrepend(center.X, center.Y);
matrix.ScalePrepend(ctx.styles.hexContentScale / Astrometrics.ParsecScaleX, ctx.styles.hexContentScale / Astrometrics.ParsecScaleY);
ctx.graphics.MultiplyTransform(matrix, XMatrixOrder.Prepend);
if (!ctx.styles.useWorldImages)
{
if (layer == WorldLayer.Background)
{
#region Zone
if (ctx.styles.worldDetails.HasFlag(WorldDetails.Zone))
{
Stylesheet.StyleElement? maybeElem = ZoneStyle(ctx, world);
if (maybeElem.HasValue)
{
Stylesheet.StyleElement elem = maybeElem.Value;
if (!elem.fillColor.IsEmpty)
{
solidBrush.Color = elem.fillColor;
ctx.graphics.DrawEllipse(solidBrush, -0.4f, -0.4f, 0.8f, 0.8f);
}
PenInfo pi = elem.pen;
if (!pi.color.IsEmpty)
{
pi.Apply(ref pen);
if (renderName && ctx.styles.fillMicroBorders)
{
using (RenderUtil.SaveState(ctx.graphics))
{
ctx.graphics.IntersectClip(new RectangleF(-.5f, -.5f, 1f, renderUWP ? 0.65f : 0.75f));
ctx.graphics.DrawEllipse(pen, -0.4f, -0.4f, 0.8f, 0.8f);
}
}
else
{
ctx.graphics.DrawEllipse(pen, -0.4f, -0.4f, 0.8f, 0.8f);
}
}
}
}
#endregion
#region Hex
if (!ctx.styles.numberAllHexes &&
ctx.styles.worldDetails.HasFlag(WorldDetails.Hex))
{
string hex;
switch (ctx.styles.hexCoordinateStyle)
{
default:
case Stylesheet.HexCoordinateStyle.Sector: hex = world.Hex; break;
case Stylesheet.HexCoordinateStyle.Subsector: hex = world.SubsectorHex; break;
}
solidBrush.Color = ctx.styles.hexNumber.textColor;
ctx.graphics.DrawString(hex, ctx.styles.hexNumber.Font, solidBrush, 0.0f, -0.5f, RenderUtil.StringFormatTopCenter);
}
#endregion
}
if (layer == WorldLayer.Foreground)
{
Stylesheet.StyleElement? elem = ZoneStyle(ctx, world);
TextBackgroundStyle worldTextBackgroundStyle = (elem.HasValue && !elem.Value.fillColor.IsEmpty)
? TextBackgroundStyle.None : ctx.styles.worlds.textBackgroundStyle;
#region Name
if (renderName)
{
string name = world.Name;
if ((isHiPop && ctx.styles.worldDetails.HasFlag(WorldDetails.Highlight)) || ctx.styles.worlds.textStyle.Uppercase)
name = name.ToUpperInvariant();
Color textColor = (isCapital && ctx.styles.worldDetails.HasFlag(WorldDetails.Highlight))
? ctx.styles.worlds.textHighlightColor : ctx.styles.worlds.textColor;
XFont font = ((isHiPop || isCapital) && ctx.styles.worldDetails.HasFlag(WorldDetails.Highlight))
? ctx.styles.worlds.LargeFont : ctx.styles.worlds.Font;
DrawWorldLabel(ctx, worldTextBackgroundStyle, solidBrush, textColor, ctx.styles.worlds.textStyle.Translation, font, name);
}
//.........这里部分代码省略.........
示例2: Test
/// <summary>
/// Some test code to check that there are no typing errors in the formulars.
/// </summary>
public static void Test()
{
XMatrix xm1 = new XMatrix(23, -35, 837, 332, -3, 12);
Matrix m1 = new Matrix(23, -35, 837, 332, -3, 12);
DumpMatrix(xm1, m1);
XMatrix xm2 = new XMatrix(12, 235, 245, 42, 33, -56);
Matrix m2 = xm2.ToMatrix();
DumpMatrix(xm2, m2);
// xm1.Multiply(xm2, XMatrixOrder.Prepend);
// m1.Multiply(m2, MatrixOrder.Append);
xm1.Multiply(xm2, XMatrixOrder.Append);
m1.Multiply(m2, MatrixOrder.Append);
DumpMatrix(xm1, m1);
xm1.Translate(-243, 342, XMatrixOrder.Append);
m1.Translate(-243, 342, MatrixOrder.Append);
DumpMatrix(xm1, m1);
xm1.Scale(-5.66, 7.87);
m1.Scale(-5.66f, 7.87f);
// xm1.Scale(-5.66, 7.87, XMatrixOrder.Prepend);
// m1.Scale(-5.66f, 7.87f, MatrixOrder.Prepend);
DumpMatrix(xm1, m1);
xm1.Rotate(135, XMatrixOrder.Append);
m1.Rotate(135, MatrixOrder.Append);
// xm1.Scale(-5.66, 7.87, XMatrixOrder.Prepend);
// m1.Scale(-5.66f, 7.87f, MatrixOrder.Prepend);
DumpMatrix(xm1, m1);
xm1.RotateAt(177, new XPoint(-3456, 654), XMatrixOrder.Append);
m1.RotateAt(177, new PointF(-3456, 654), MatrixOrder.Append);
DumpMatrix(xm1, m1);
xm1.Shear(0.76, -0.87, XMatrixOrder.Prepend);
m1.Shear(0.76f, -0.87f, MatrixOrder.Prepend);
DumpMatrix(xm1, m1);
xm1 = new XMatrix(23, -35, 837, 332, -3, 12);
m1 = new Matrix(23, -35, 837, 332, -3, 12);
XPoint[] xpoints = new XPoint[3]{new XPoint(23, 10), new XPoint(-27, 120), new XPoint(-87, -55)};
PointF[] points = new PointF[3]{new PointF(23, 10), new PointF(-27, 120), new PointF(-87, -55)};
xm1.TransformPoints(xpoints);
m1.TransformPoints(points);
xm1.Invert();
m1.Invert();
DumpMatrix(xm1, m1);
}