123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335 |
- using System;
- using System.Collections.Generic;
- using System.Collections.Specialized;
- using System.Drawing;
- using System.Runtime.InteropServices;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Imaging;
- using System.Windows.Shapes;
- namespace WWPipeLine.WPF
- {
- /// <summary>
- /// BForm.xaml 的交互逻辑
- /// </summary>
- public partial class BForm : Window
- {
- readonly IResposeWPF m_IResposeWPF;
- public BForm(IResposeWPF respose)
- {
- InitializeComponent();
- Init();
- m_IResposeWPF = respose;
- }
- public System.Windows.Shapes.Ellipse EllipseAll
- {
- get
- {
- return m_EllipseAll;
- }
- }
- public System.Windows.Shapes.Ellipse EllipseWS
- {
- get
- {
- return m_EllipseDL;
- }
- }
- public System.Windows.Shapes.Ellipse EllipseYS
- {
- get
- {
- return m_EllipseDX;
- }
- }
- public System.Windows.Controls.Image ImageInfo
- {
- get
- {
- return m_ImageInfo;
- }
- }
- public System.Windows.Controls.Image ImagePan
- {
- get
- {
- return m_ImagePan;
- }
- }
- public System.Windows.Controls.Image ImageTerrain
- {
- get
- {
- return m_ImageTerrain;
- }
- }
- public void SetInfo(string infoName,NameValueCollection nvc)
- {
- if (this.Visibility == Visibility.Hidden) return;
- if (nvc.Count == 0)
- {
- m_InfoGrid.Visibility = Visibility.Hidden;
- return;
- }
- InfoScrollViewer.Height = this.m_InfoBorder.ActualHeight - 40;
- m_InfoGrid.Visibility = Visibility.Visible;
- m_InfoItems.Children.Clear();
- m_InfoTitle.Content = infoName;
- for (int i = 0;i < nvc.Count; i++)
- {
- string nvKey = nvc.GetKey(i);
- string nvValue = nvc.Get(i);
- WPF.PropertiesEx prop = new WPF.PropertiesEx(nvKey, nvValue);
- m_InfoItems.Children.Add(prop);
- }
- }
- private void SetImageSource(System.Windows.Controls.Image image,string fileName)
- {
- string path;
- if (!System.IO.File.Exists(fileName))
- {
- path = Commons.Paths.ApplicationResourcesDir + "\\" + fileName;
- }
- else
- {
- path = fileName;
- }
- Bitmap bitmap = new Bitmap(path);
- image.Tag = path;
- image.Source = BitmapToBitmapSource(bitmap);
- }
- void Init()
- {
- SetImageSource(m_ImageLogoBg, "BigScreen\\形状512.png");
- SetImageSource(m_ImageLogoICO, "BigScreen\\logo.png");
- SetImageSource(m_ImageTitle, "BigScreen\\云创经纬三维管线信息系统.png");
- SetImageSource(m_ImageChartTitle01, "BigScreen\\RightArrow.png");
- SetImageSource(m_ImageChartTitle02, "BigScreen\\RightArrow.png");
- SetImageSource(m_ImageChartTitle03, "BigScreen\\RightArrow.png");
- SetImageSource(m_ImageStaticsPanelIcon, "BigScreen\\EllipseDL-blue.png");
- SetImageSource(m_ImageExist, "exit.png");
- m_ImageExist.MouseUp += ImageExist_MouseUp;
- SetImageSource(m_ImageHome, "BigScreen\\ImageHome.png");
- m_ImageHome.MouseUp += ImageHome_MouseUp;
- m_ImageHome.MouseEnter += ImageButton_MouseEnter;
- m_ImageHome.MouseLeave += ImageButton_MouseLeave;
- SetImageSource(m_ImageInfo, "BigScreen\\ImageInfo.png");
- m_ImageInfo.MouseEnter += ImageButton_MouseEnter;
- m_ImageInfo.MouseLeave += ImageButton_MouseLeave;
- SetImageSource(m_ImagePan, "BigScreen\\ImagePan.png");
- m_ImagePan.MouseEnter += ImageButton_MouseEnter;
- m_ImagePan.MouseLeave += ImageButton_MouseLeave;
- SetImageSource(m_ImageTerrain, "BigScreen\\ImageTerrain.png");
- m_ImageTerrain.MouseEnter += ImageButton_MouseEnter;
- m_ImageTerrain.MouseLeave += ImageButton_MouseLeave;
- InfoScrollViewer.MouseEnter += InfoScrollViewer_MouseEnter;
- InfoScrollViewer.MouseLeave += InfoScrollViewer_MouseLeave;
- Grid oo = this.Content as Grid;
- UIElementCollection Childrens = oo.Children;
- foreach (UIElement ui in Childrens)
- {
- IEnumerable<Grid> gds = FindVisualChildren<Grid>(ui);
- foreach (var gd in gds)
- {
- if (gd.Tag != null && gd.Tag.ToString() == "BTN")
- {
- /*
- gd.MouseEnter += Grid_MouseEnter;
- gd.MouseLeave += Grid_MouseLeave;
- */
- }
- if (gd.Parent is StackPanel)
- {
- if ((gd.Parent as StackPanel).Name.StartsWith("TopContext"))
- {
- /*
- gd.Opacity = .5;
- gd.MouseEnter += Grid_MouseEnter;
- gd.MouseLeave += Grid_MouseLeave;
- */
- }
- }
- }
- IEnumerable<Ellipse> ee = FindVisualChildren<Ellipse>(ui);
- foreach (Ellipse e in ee)
- {
- if (e.Tag != null && e.Tag.ToString() == "TYPES")
- {
- e.Cursor = Cursors.Hand;
- if (e.Parent is Grid)
- {
- Grid g = e.Parent as Grid;
- string path = Commons.Paths.ApplicationResourcesDir + "\\BigScreen\\" + e.Name.Replace("m_", "") + ".png";
- g.Tag = path;
- e.MouseEnter += MenuMouseEnter;
- e.MouseLeave += MenuMouseLeave;
- e.MouseUp += MenuMouseUp;
- if (!System.IO.File.Exists(path)) continue;
- Bitmap bitmap = new Bitmap(path);
- g.Background = new ImageBrush(BitmapToBitmapSource(bitmap));
- }
- }
- }
- }
- }
- private void MenuMouseUp(object sender, MouseButtonEventArgs e)
- {
- Ellipse ell = sender as Ellipse;
- Grid g = ell.Parent as Grid;
- string defaultPath = g.Tag as string;
- string blueBg = defaultPath.Replace(".png", "-blue.png");
- SetImageSource(m_ImageStaticsPanelIcon, blueBg);
- }
- private void ImageButton_MouseLeave(object sender, MouseEventArgs e)
- {
- System.Windows.Controls.Image img = sender as System.Windows.Controls.Image;
- string defaultPath = img.Tag as string;
- Bitmap bitmap = new Bitmap(defaultPath);
- img.Source = BitmapToBitmapSource(bitmap);
- }
- private void ImageButton_MouseEnter(object sender, MouseEventArgs e)
- {
- System.Windows.Controls.Image img = sender as System.Windows.Controls.Image;
- string defaultPath = img.Tag as string;
- string bluePath = defaultPath.Replace(".png","-blue.png");
- Bitmap bitmap = new Bitmap(bluePath);
- img.Source = BitmapToBitmapSource(bitmap);
- }
- private void MenuMouseLeave(object sender, MouseEventArgs e)
- {
- Ellipse ell = sender as Ellipse;
- Grid g = ell.Parent as Grid;
- string defaultPath = g.Tag as string;
- Bitmap bitmap = new Bitmap(defaultPath);
- g.Background = new System.Windows.Media.ImageBrush(BitmapToBitmapSource(bitmap));
- }
- private void MenuMouseEnter(object sender, MouseEventArgs e)
- {
- Ellipse ell = sender as Ellipse;
- Grid g = ell.Parent as Grid;
- string defaultPath = g.Tag as string;
- string blueBg = defaultPath.Replace(".png","-blue.png");
- Bitmap bitmap = new Bitmap(blueBg);
- g.Background = new System.Windows.Media.ImageBrush(BitmapToBitmapSource(bitmap));
- }
- private void Grid_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e)
- {
- Grid gd = sender as Grid;
- gd.Opacity = .5;
- }
- private void Grid_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e)
- {
- Grid gd = sender as Grid;
- gd.Opacity = 1;
- }
- public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
- {
- if (depObj != null)
- {
- for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
- {
- DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
- if (child != null && child is T t)
- {
- yield return t;
- }
- foreach (T childOfChild in FindVisualChildren<T>(child))
- {
- yield return childOfChild;
- }
- }
- }
- }
- private void InfoScrollViewer_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e)
- {
- InfoScrollViewer.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden;
- }
- private void InfoScrollViewer_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e)
- {
- InfoScrollViewer.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
- }
- private void ImageHome_MouseUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
- {
- this.m_IResposeWPF.ResposeWPF("VIEWENTIRE");
- }
- protected override void OnKeyUp(KeyEventArgs e)
- {
- base.OnKeyUp(e);
- if (e.Key == Key.Escape)
- this.Hide();
- }
- private void ImageExist_MouseUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
- {
- this.Hide();
- }
- //public DockPanel StackPanel01
- //{
- // get { return this.m_PanelLeftCahrt01; }
- //}
- public Grid StackPanel02
- {
- get { return this.m_PanelLeftCahrt02; }
- }
- public Grid StackPanel03
- {
- get { return this.m_PanelLeftCahrt03; }
- }
- public Grid StackPanel04
- {
- get { return this.m_PanelLeftCahrt04; }
- }
- [DllImport("gdi32.dll", SetLastError = true)]
- private static extern bool DeleteObject(IntPtr hObject);
- //将 Bitmap转换为BitmapSource
- //使用过System.Drawing.Bitmap后一定要用DeleteObject释放掉对象,不然内存不释放,很快系统内存就消耗光了。
- private static ImageSource BitmapToBitmapSource(Bitmap bitmap)
- {
- IntPtr hBitmap = bitmap.GetHbitmap();
- ImageSource wpfBitmap = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
- hBitmap,
- IntPtr.Zero,
- Int32Rect.Empty,
- BitmapSizeOptions.FromEmptyOptions());
- if (!DeleteObject(hBitmap))//记得要进行内存释放。否则会有内存不足的报错。
- {
- throw new System.ComponentModel.Win32Exception();
- }
- return wpfBitmap;
- }
- }
- }
|