Winforms 如何使抽绳在负y比例因子下工作?
在一个私有股票图表上,我使用一个渲染矩形,原点在左下角,y轴反转,比例因子y为负。Y轴记号渲染得很好,但绘图文本(drawstring)是我遇到问题的地方Winforms 如何使抽绳在负y比例因子下工作?,winforms,drawstring,scaletransform,Winforms,Drawstring,Scaletransform,在一个私有股票图表上,我使用一个渲染矩形,原点在左下角,y轴反转,比例因子y为负。Y轴记号渲染得很好,但绘图文本(drawstring)是我遇到问题的地方 using (Pen pen = new Pen(_color)) using (Font drawFont = new Font("Arial", 16)) using (SolidBrush drawBrush = new SolidBrush(Color.Black
using (Pen pen = new Pen(_color))
using (Font drawFont = new Font("Arial", 16))
using (SolidBrush drawBrush = new SolidBrush(Color.Black))
{
pen.Width = 1F / e.Graphics.DpiX;
foreach (float tick in this.TimeSeriesPanelControl.YTicks)
{
e.Graphics.DrawLine(pen, right, tick, right + 10, tick);
// this is not producing text to the right of the tick that renders properly.
e.Graphics.DrawString(tick.ToString("F2"), drawFont, drawBrush, right + 15, tick);
}
}
我已经看到文本是颠倒的,这是由y坐标上的负比例因子造成的
问题是如何使drawstring将文本呈现在勾号的右侧?变换矩阵在哪里?它们是如何应用的(按哪个顺序)。负比例因子是什么意思?这是错误的:
pen.Width=1F/e.Graphics.DpiX代码>我的意思是,你是否应用了e.Graphics.TranslateTransform(0[Canvas.Height])代码>和e.Graphics.ScaleTransform([ScaleX],[ScaleY])代码>,还是将两个矩阵相乘,然后设置e.Graphics.Transform=[Mul Matrices]
?最初设置为>e.Graphics.TranslateTransform(0,this.ClientRectangle.Height);>e、 图形.比例变换(1,-1);随后在OnPaint中,当已知最小值和最大值y以及原点y时:>e.Graphics.TranslateTransform(70,原点);>e、 图形.ScaleTransform(1,scaleY);这样可以很好地渲染曲线和y记号。问题在于所示的记号标签。最初是e.Graphics.TranslateTransform(0,this.ClientRectangle.Height);e、 图形.比例变换(1,-1);随后在OnPaint中,当已知最小和最大y以及原点y时:e.Graphics.TranslateTransform(70,originY);e、 图形.ScaleTransform(1,scaleY);这样可以很好地渲染曲线和y记号。如图所示,勾号标签存在问题。通过删除所有变换并自行变换所有内容来解决此问题,从而获得更切中要害的解决方案