Управление масштабированием к Форме WPF

Ваша главная проблема, как я вижу, состоит в том, что у вас есть два статических массива, yy и mm. Прежде всего, не имеет смысла иметь глобальную переменную в течение нескольких месяцев, когда вы уже годами располагаете этой информацией в глобальной переменной, просто для хранения большего количества данных и кода.

Во-вторых, здесь я обнаружил ошибку в вашем коде

y.setMonth(mm);

´ Здесь вы назначаете статический массив экземпляру года, что означает, что все объекты Year будут использовать один и тот же объект массива Month.

Я бы начал с уничтожения массива mm и вместо этого позволил бы Year иметь внутренний массив (12) объектов Month. Поэтому, возможно, измените setMonth на addMonth

Еще одна незначительная вещь, чтобы избежать ошибок, когда вы делаете

y.setYear(1968+i);

, а затем позже, когда вы хотите установить то же значение снова, вы не должны ' t сделать dd[c].setYy(1968+i), но вместо этого dd[c].setYy(y.getYear()) и аналогично для других значений.

17
задан Sergey Aldoukhov 22 July 2011 в 02:07
поделиться

4 ответа

Поместите ваши вещи в сетку, свяжите преобразование масштабирования сетки с ползунком (минимальное значение ползунка должно быть 1):

    <Grid x:Name="LayoutRoot">
        <Grid.RowDefinitions>
            <RowDefinition Height="0.867*"/>
            <RowDefinition Height="0.133*"/>
        </Grid.RowDefinitions>
        <Slider x:Name="slider" Grid.Row="1" Minimum="1"/>
        <Grid RenderTransformOrigin="0.5,0.5">
            <Grid.RenderTransform>
                <TransformGroup>
                    <ScaleTransform 
                    ScaleY="{Binding Path=Value, ElementName=slider}" 
                    ScaleX="{Binding Path=Value, ElementName=slider}"/>
                </TransformGroup>
            </Grid.RenderTransform>
            <TextBox Text="TextBox" Height="45.214"
 VerticalAlignment="Top" Margin="194,139,209,0"/>
            <TextBox VerticalAlignment="Bottom" 
Text="TextBox" Margin="194,0,209,118.254" Height="48.96"/>
        </Grid>
    </Grid>
24
ответ дан 30 November 2019 в 12:27
поделиться

Возможно, вы могли бы попробовать Zoom Control, который является частью WPF Extensions, доступных в Codeplex :

alt text http://i3.codeplex.com/Project/ Скачать / FileDownload.aspx ProjectName = wpfextensions & амп;? DownloadId = 66810

5
ответ дан 30 November 2019 в 12:27
поделиться

Вы должны взглянуть на эту статью Мицу Фурута (не беспокойтесь о смешном названии!). Я не уверен, что он точно соответствует вашим требованиям, но он может дать вам некоторые идеи ...

1
ответ дан 30 November 2019 в 12:27
поделиться

Чтобы получить профессиональное управление масштабированием для WPF, воспользуйтесь ZoomPanel .

Он не бесплатный, но очень прост в использовании и имеет множество функций - анимированное масштабирование и панорамирование, поддержка ScrollViewer, поддержка колеса мыши, включенный ZoomController (с перемещением, увеличением, уменьшением, масштабированием прямоугольника, кнопками сброса) . Он также поставляется с множеством примеров кода.

1
ответ дан 30 November 2019 в 12:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: