0

私の問題を説明する方法がわからないので、表示しようとします:

これらの楕円は実際には円です

これらの楕円は実際には円です。ウィンドウのサイズを変更すると、次のようになります。

ここに画像の説明を入力

ご覧のとおり、今は円がありますが、ウィンドウのサイズを変更しても取得できないことがあります。何を変更する必要があるかを誰かが知っていれば、もうサイズを変更する必要はありませんか?

これは私のプロットウィンドウです:

<Window x:Class="View.Views.PlotWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:oxy="http://oxyplot.org/wpf"
    Title="PlotWindow" MinHeight="600" MinWidth="800" WindowStartupLocation="CenterScreen">

    <oxy:PlotView Model="{Binding PlotModel}" />

</Window>

およびプロット モデルを作成する方法。

public override PlotModel DrawPlot(Data data)
        {
            ObservableCollection<Radial> radials = ((RdData)data).Radials;
            if (data.Records[0].Items.Count > 2)
                return null;
            PlotModel model = new PlotModel();
            int i = 0;
            foreach (var r in radials)
            {
                var rad = generateRadialFunc(r);
                var series = new FunctionSeries();
                foreach (var p in rad)
                {
                    series.Points.Add(new DataPoint(p[0], p[1]));
                }
                series.MarkerSize = 2;
                series.MarkerStrokeThickness = 1;
                series.Title = "Radial (" + string.Format("{0:N2}", r.centerCoordinates.Items[0].Value) + ';' + string.Format("{0:N2}", r.centerCoordinates.Items[1].Value) + ')';
                i++;
                model.Series.Add(series);
            }
            scatterAndAxis(model, data);

            return model;
        }

        protected double[][] generateRadialFunc(Radial radial)
        {
            double[][] rad = new double[3600][];
            int j = 0;
            for (double i = 0.0; i <= 360.0; i+=0.1)
            {
                rad[j] = new double[2];
                double angle = i * Math.PI / 180;
                rad[j][0] = radial.centerCoordinates.Items[0].Value + radial.R * Math.Cos(angle);
                rad[j][1] = radial.centerCoordinates.Items[1].Value + radial.R * Math.Sin(angle);
                j++;
            }
            return rad;
        }
4

0 に答える 0