У меня есть холст, который меняет размер в зависимости от ввода пользователя, я хочу нажать кнопку и иметь возможность уменьшить масштаб, чтобы увидеть весь холст. В основном я знаю высоту и ширину холста, я просто хочу увеличить или уменьшить масштаб, чтобы пользователь мог видеть весь холст. У меня есть увеличение и уменьшение масштаба, чтобы работать, но не уверен, как увеличить масштаб, чтобы соответствовать? есть мысли?
11 февраля
Спасибо за ваш ответ, Это было очень полезно, и я могу полностью уменьшить масштаб холста. Проблема, с которой я сталкиваюсь сейчас, заключается в том, что у пользователя есть элементы управления увеличением и уменьшением. Поэтому, если пользователь увеличивает и уменьшает масштаб, а затем пытается увеличить масштаб, чтобы он соответствовал холсту, коэффициент масштабирования будет отключен, мой код будет ниже
Это для основного увеличения и уменьшения на холсте:
double ScaleRate = 1.2;
public void buttonZoomIn_Click(object sender, RoutedEventArgs e)
{
st.ScaleX *= ScaleRate;
st.ScaleY *= ScaleRate;
}
public void buttonZoomOut_Click(object sender, RoutedEventArgs e)
{
st.ScaleX /= ScaleRate;
st.ScaleY /= ScaleRate;
}
Кнопка увеличения до размера, которую я хочу нажать, чтобы полностью уменьшить масштаб на холсте:
private void zoomToFitBt_Click(object sender, RoutedEventArgs e)
{
float maxWidthScale = (float)ScrollViewerCanvas.Width / (float)Canvas1.Width;
float maxHeightScale = (float)ScrollViewerCanvas.Height / (float)Canvas1.Height;
float scale = Math.Min(maxHeightScale, maxWidthScale);
if (st.ScaleX > scale || st.ScaleY> scale)
{
st.ScaleX *= scale;
st.ScaleY *= scale;
}
}
Если я нажимаю кнопку увеличения, чтобы подогнать кнопку с самого начала, то это нормально, но когда пользователь сделал какое-то ручное масштабирование, он испортился. Моя идея заключалась в том, чтобы, возможно, каждый раз, когда пользователь нажимал кнопку увеличения для подгонки, он сначала возвращался в исходное состояние, а затем использовал увеличение для подбора кода, но не был уверен в этом.
Спасибо за вашу помощь, ребята