wpf devexpress

背景 winform切为wpf,使用devexpress插件 

参考的网站为:https://docs.devexpress.com/WPF/7875/wpf-controls

1.GridControl行号设置

这里主要有两个问题,一个是行号要从1开始,二是行号这一列的行宽设置(默认行宽到100后,数字就显示不全了)

行宽是IndicatorWidth 属性,行号是RowIndicatorContentTemplate 实现

    <dxg:TableView ShowGroupPanel="False"   Name="gvTable" IndicatorWidth="50"  RowIndicatorContentTemplate="{StaticResource rowIndicatorContentTemplate}"/>
            
  <DataTemplate x:Key="rowIndicatorContentTemplate">
                <StackPanel VerticalAlignment="Stretch"
                        HorizontalAlignment="Stretch">
                    <TextBlock Text="{Binding Path=RowHandle.Value,Converter={StaticResource rowIndicatorConverter}}"
                           TextAlignment="Center"
                           Foreground="Black"/>
                </StackPanel>
            </DataTemplate>

public class RowIndicatorConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            try
            {
                if (value == null)
                {
                    return 0;
                }
                int num = (int) value;
                num = num + 1;
                return num;
            }
            catch (Exception ex)
            {
                return 0;
            }

        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value != null && value.Equals(true) ? parameter : Binding.DoNothing;
        }
    } 

2.ChartControl 使用

这块wpf和winform的实现还是有点区别的。

legend是图例,通过Orientation和VericalPosition来控制位置。AxisX和AxisY为X和Y轴。

<dxc:ChartControl x:Name="chartControl1" Grid.Column="1" Grid.Row="1">
            <dxc:ChartControl.Legend>
                <dxc:Legend HorizontalPosition="Center" Orientation="Horizontal" VerticalPosition="TopOutside"  FontSize="10" Background="White" Name="chartLegend"/>
            </dxc:ChartControl.Legend>
            <dxc:XYDiagram2D x:Name="xychart" EnableAxisXNavigation="True" EnableAxisYNavigation="True">
                <dxc:XYDiagram2D.ContextMenu>
                    <ContextMenu>
                        <MenuItem Name="miCopy" Header="拷贝到剪贴板" Click="miCopy_Click" />
                    </ContextMenu>
                </dxc:XYDiagram2D.ContextMenu>
                <dxc:XYDiagram2D.AxisX>
                    <dxc:AxisX2D>
                        <dxc:AxisX2D.Title  >
                            <dxc:AxisTitle/>
                        </dxc:AxisX2D.Title>
                    </dxc:AxisX2D>
                </dxc:XYDiagram2D.AxisX>
                <dxc:XYDiagram2D.AxisY>
                    <dxc:AxisY2D>
                        <dxc:AxisY2D.Title  >
                            <dxc:AxisTitle/>
                        </dxc:AxisY2D.Title>
                        <dxc:AxisY2D.VisualRange>
                            <dxc:Range MaxValue="100" MinValue="0"></dxc:Range>
                        </dxc:AxisY2D.VisualRange>
                        <dxc:AxisY2D.WholeRange>
                            <dxc:Range MaxValue="100" MinValue="0"></dxc:Range>
                        </dxc:AxisY2D.WholeRange>
                    </dxc:AxisY2D>
                </dxc:XYDiagram2D.AxisY>
            </dxc:XYDiagram2D>
        </dxc:ChartControl>

添加数据内容,可以为点(PointSeries2D),曲线(SplineSeries2D),或者饼状图(PieSeries2D)等

  PointSeries2D series1 = new PointSeries2D();
                    series1.DisplayName = featureType;

                    series1.MarkerModel = new CircleMarker2DModel();
                    series1.Brush = Brushes.Red;
                    series1.MarkerSize = 5;

鼠标滚动来放大缩小图片是通过EnableAxisXNavigation和EnableAxisYNavigation,但是默认为true的话初始化后就有滚动条很难看,所以改为当滚轮滚动时,设置这两个值。 

    private void xychart_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            xychart.EnableAxisXNavigation = true;
            xychart.EnableAxisYNavigation = true;
        }

图片右键复制

 private void miCopy_Click(object sender, RoutedEventArgs e)
        {
            MemoryStream stream = new MemoryStream();
            chartControl1.ExportToImage(stream);
            System.Windows.Forms.Clipboard.Clear();
            System.Windows.Forms.Clipboard.SetImage(System.Drawing.Image.FromStream(stream));
        }

3.GridView.GetDataRow的替换

winform中为   DataRow drFocused = gvHistory.GetDataRow(gvHistory.FocusedRowHandle);

wpf替换为

DataRowView obj = gdXls.GetRow(firstRow - 1) as DataRowView;

            DataRow fieldRow = obj.Row;

4.DocumentManager的替换

wpf中用DockLayoutManager 替换同时手动计算每个子窗口的位置(以三行两列为例)

 <dxdo:DockLayoutManager Margin="12" Name="dockManager1">
        <dxdo:LayoutGroup Orientation="Horizontal">
                <dxdo:DocumentGroup  x:Name="documentGroup"  DockItemInterval="10" MDIStyle="MDI" Orientation="Vertical">
                 
            </dxdo:DocumentGroup>
        </dxdo:LayoutGroup>
        

    </dxdo:DockLayoutManager>
  private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 2; j++) {
                    documentGroup.Items.Add(CreateDocumentPanel(i,j));
                }
            }

        }
 private DocumentPanel CreateDocumentPanel(int i, int j) {
            double width = documentGroup.ActualWidth / 2;
            double height = documentGroup.ActualHeight / 3;
            DocumentPanel panel = new DocumentPanel(); 
            panel.Name = "panel" + i + j;
            ucChart control=null;
            if (j == 0) {
                if (i == 0) {
                    control = new ucChart(0);
                }
                else if (i == 1)
                {
                    control = new ucChart(3);
                }
                else if (i == 2)
                {
                    control = new ucChart(5); 
                }
            }
            else if (j == 1)
            {
                if (i == 0)
                {
                    control = new  ucChart(2);
                }
                else if (i == 1)
                {
                    control = new ucChart(1);
                }
                else if (i == 2)
                {
                    control = new ucChart(4);
                }
            }
            if (control != null)
            {
                panel.Content = control;
            }
            panel.MDISize = new Size(width,height);
            panel.MDILocation = new Point(j*width,i*height);
            return panel;
        }
    }

5.ImageList图片导出

winfrom中使用ImageList来存放资源,wpf切换时,需要把这些图片导出为png。

     ImageList imageList = new ImageList();
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
            imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("img.ImageStream")));
            int i = 0;
            foreach (Image img  in imageList.Images)
            {
                img.Save(i+++".png",ImageFormat.Png);
            }

 

### 回答1: WPF Devexpress Chart是一种用于在WPF应用程序中显示图表数据的工具。要放大WPF Devexpress Chart中的图表,可以使用以下方法: 首先,确保已引用Devexpress控件库并在WPF应用程序中添加Chart控件。然后,在XAML中创建一个Chart元素,并设置其Name属性以便在代码中引用。 要放大图表,可以使用鼠标滚轮来控制缩放级别。当鼠标在图表区域内滚动时,Chart控件会自动响应并相应地放大或缩小图表。这种方式非常直观和简单,用户可以根据需要自定义图表的显示比例。 另一种方式是使用代码来控制图表的缩放。可以通过Chart控件的ScaleX和ScaleY属性来实现图表的缩放效果。ScaleX属性控制图表在水平方向上的缩放比例,而ScaleY属性控制图表在垂直方向上的缩放比例。可以通过调整这些属性的值来放大或缩小图表。 例如,要将图表放大到原始大小的两倍,可以使用以下代码: ``` chart.ScaleX = 2; chart.ScaleY = 2; ``` 还可以通过设置Chart控件的ViewportSize属性来控制图表的可视区域大小。ViewportSize属性指定了图表中实际显示的部分,可以通过更改其值来放大或缩小图表的显示范围。 综上所述,使用WPF Devexpress Chart放大图表可以通过鼠标滚轮操作、代码控制ScaleX和ScaleY属性以及调整ViewportSize属性来实现。这些方法都可以根据需求灵活地调整图表的显示大小。 ### 回答2: WPF DevExpress Chart是一种功能强大的图表控件,可以实现数据的可视化展示和分析。在使用该控件时,我们可以通过各种方法进行图表的放大。 一种常见的方法是使用鼠标滚轮进行图表的放大。当鼠标指针位于图表上时,我们可以通过向前滚动滚轮来放大图表。这会使图表中显示的数据更加详细,可以更清楚地观察到细节。 另一种方法是使用控件自带的放大功能。我们可以在图表控件的属性或方法中找到相关的放大功能设置。通过调整相关属性或调用相关的方法,我们可以实现图表的放大。例如,可以设置控件的ZoomEnabled属性为true,然后通过调整ZoomFactor属性的值来实现放大效果。 除了这些方法之外,我们还可以通过修改图表的显示范围来实现放大效果。通过设置图表的X轴和Y轴的最小值和最大值,我们可以调整图表的显示范围,使得图表中显示的数据更加详细。 总结起来,WPF DevExpress Chart的放大可以通过鼠标滚轮、控件自带的放大功能设置以及调整显示范围等方法实现。这些方法可以根据具体的需求和场景进行选择和使用,使得图表的展示效果更加优秀和易于分析。 ### 回答3: 在WPF开发中,使用DevExpress Chart控件实现图表的放大功能可以通过以下步骤实现: 1. 首先,确保已经正确安装并引用了DevExpress控件库。 2. 在XAML文件中,添加ChartControl控件,并设置其Name属性,例如: ``` <dx:ChartControl x:Name="chartControl" Width="800" Height="500"> <!-- 添加图表内容 --> </dx:ChartControl> ``` 3. 在代码中,可以通过以下代码实现图表的放大功能: ```csharp private void ZoomIn() { chartControl.Diagram.ZoomIn(); } private void ZoomOut() { chartControl.Diagram.ZoomOut(); } ``` 在需要放大的地方调用ZoomIn()方法,即可实现图表的放大功能。同样,调用ZoomOut()方法可以实现图表的缩小功能。 需要注意的是,ChartControl的Diagram属性是用来表示图表的控件,通过该属性可以对图表进行操作。通过调用Diagram的ZoomIn()和ZoomOut()方法即可实现图表的放大和缩小。 另外,还可以通过设置其他属性来进一步控制图表的放大功能,如设置ZoomingOptions属性来限制图表的最大放大倍数,设置MouseRightButtonOptions属性来指定右键操作的放大方式等。 希望以上内容对您有所帮助!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值