【发布时间】:2016-05-28 10:32:43
【问题描述】:
我正在尝试绘制一组正方形,但正方形的原点(0,0)最初位于左上角,我希望正方形从右下角渲染, 我发现这段代码可以翻转坐标,但是在winform上没有渲染。
我知道我在 TranslateTransform 的高度属性中出错了。我不明白为什么需要高度,因为我正在尝试绘制一组二维正方形。
我尝试硬编码 height 属性仍然没有用。
public void ScaleTransformFloat(PaintEventArgs e,List<Square> lstSquare)
{
int Height = 10;
// Begin graphics container
GraphicsContainer containerState = e.Graphics.BeginContainer();
// Flip the Y-Axis
e.Graphics.ScaleTransform(1.0F, -1.0F);
// Translate the drawing area accordingly
//
e.Graphics.TranslateTransform(0.0F, -(float)Height);
// Whatever you draw now (using this graphics context) will appear as
// though (0,0) were at the bottom left corner
//User-defined function to draw a square
DrawSquare(e,lstSquare);
// End graphics container
e.Graphics.EndContainer(containerState);
}
绘制正方形集的方法
public void DrawSquare(PaintEventArgs e,List<Square> lstSquare)
{
foreach(Square s in lstSquare){
e.Graphics.DrawRectangle(Pens.Black, 0,0 ,s.m_Side, s.m_Side);
}
}
【问题讨论】:
-
a) 不知道为什么在转换图形对象时会变得如此复杂(并且可能同样错误),而您也可以调整绘图代码。b) DrawSquare 将所有内容绘制在 ( 0,0),不管你以前做什么,所有的方块都在彼此的顶部。c) 10 像素的总高度,真的吗?
-
实际上这是我在绘制形状方面的第一个任务。最初所有的正方形都是从左上角渲染的,我希望它们从左下角渲染。我遇到了link) 这将帮助我渲染正方形从左下角开始。但什么都没有出现。我想知道为什么在绘制一组二维正方形时需要高度
-
高度不是 3d 高度。它是您要绘制的目标控件的总高度。从左上角向上翻转一张纸的成像。现在您需要将其向下移动。但距离是多少?答:纸张大小..