Я реализовал пользовательский холст в WPF с помощью c #.На холсте будут сохраняться нестандартные фигуры.Я также добавил функцию масштабирования к нему.Когда холст масштабируется на очень высоком уровне, я хочу вычислить видимую часть холста, чтобы я мог выполнять операции с этой большой частью холста, сохраняя при этом наилучшую производительность.вокруг пикселей.Есть ли способ рассчитать ширину одного пикселя при увеличении?
Ниже приведен мой код для масштабирования и рисования сетки:
class MyC: Canvas
{
ScaleTransform st = new ScaleTransform();
double zoomLevel = 1.1;
public MyC()
{
st.ScaleX = 1;
st.ScaleY = 1;
this.RenderTransform = st;
}
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
Pen pen = new Pen(new SolidColorBrush(Colors.Silver), 1/zoomLevel);
pen.DashStyle = DashStyles.Dash;
for (double x = 0; x < this.ActualWidth; x += 1)
{
drawingContext.DrawLine(pen, new Point(x, 0), new Point(x, this.ActualHeight));
}
for (double y = 0; y < this.ActualHeight; y += 1)
{
drawingContext.DrawLine(pen, new Point(0, y), new Point(this.ActualWidth, y));
}
}
protected override void OnMouseWheel(System.Windows.Input.MouseWheelEventArgs e)
{
base.OnMouseWheel(e);
if (e.Delta > 0)
{
zoomLevel *= 1.1;
zoomLevel *= 1.1;
}
else
{
zoomLevel /= 1.1;
zoomLevel /= 1.1;
}
st.ScaleY = zoomLevel;
st.ScaleX = zoomLevel;
}
}