WINFORM WPF字体颜色相互转换

简介: 一、WPF字体颜色TO WINFORM 格式及WINFORM 字体颜色TO  WPF 格式 private void setFontDialog()         {             System.

一、WPF字体颜色TO WINFORM 格式及WINFORM 字体颜色TO  WPF 格式


  1. private void setFontDialog()
  2.         {
  3.             System.Windows.Forms.FontDialog fontDialog = new System.Windows.Forms.FontDialog();
  4.             fontDialog.ShowColor = true;
  5.             Control currCtrl = ((Control)this.mSelectedElem);

  6.             /* WPF 字体颜色 TO WINFORM 格式 */
  7.             System.Drawing.Font font = new System.Drawing.Font(currCtrl.FontFamily.ToString(), (float)currCtrl.FontSize);
  8.             fontDialog.Font = font;
  9.             byte r = ((SolidColorBrush)currCtrl.Foreground).Color.R;
  10.             byte g = ((SolidColorBrush)currCtrl.Foreground).Color.G;
  11.             byte b = ((SolidColorBrush)currCtrl.Foreground).Color.B;
  12.             fontDialog.Color = System.Drawing.Color.FromArgb(r,g,b);
  13.             fontDialog.ShowDialog();

  14.             /* Reset font and forecolor to selectedelem */
  15.             /* WINFORM 字体颜色 TO WPF 格式 */
  16.             if (currCtrl is Label)
  17.             {
  18.                 Label currLbl = (Label)currCtrl;

  19.                 /* 设置字体名、字体粗体与斜体写法 */
  20.                 string fontName = fontDialog.Font.FontFamily.Name;
  21.                 currLbl.FontFamily = new System.Windows.Media.FontFamily(fontName);
  22.                 currLbl.FontSize = fontDialog.Font.Size;
  23.                 //!!!!!!!!!!
  24.                 if(fontDialog.Font.Bold)
  25.                     currLbl.FontWeight = FontWeights.Bold;
  26.                 if (fontDialog.Font.Italic)
  27.                     currLbl.FontStyle = FontStyles.Italic;

  28.                 /* 字体颜色 */
  29.                 System.Windows.Media.SolidColorBrush scBrush = new System.Windows.Media.SolidColorBrush();
  30.                 System.Windows.Media.Color clr = new System.Windows.Media.Color();

  31.                 clr.A = fontDialog.Color.A;
  32.                 clr.B = fontDialog.Color.B;
  33.                 clr.G = fontDialog.Color.G;
  34.                 clr.R = fontDialog.Color.R;
  35.                 scBrush.Color = clr;
  36.                 currLbl.Foreground = scBrush;
  37.             }
  38.         }


二、WPF背景色TO WINFORM背景色及WINFORM背景色TO  WPF背景色


  1. private void setColor()
  2.         {
  3.             System.Windows.Forms.ColorDialog clrDialog = new System.Windows.Forms.ColorDialog();
  4.             clrDialog.AllowFullOpen = true;
  5.             clrDialog.FullOpen = true;
  6.             clrDialog.ShowHelp = false;
  7.             
  8.             /* WPF 背景色 TO WINFORM 背景色 */
  9.             Control currCtrl = ((Control)this.mSelectedElem);
  10.             byte r = ((SolidColorBrush)currCtrl.Background).Color.R;
  11.             byte g = ((SolidColorBrush)currCtrl.Background).Color.G;
  12.             byte b = ((SolidColorBrush)currCtrl.Background).Color.B;

  13.             clrDialog.Color = System.Drawing.Color.FromArgb(r, g, b);
  14.             clrDialog.ShowDialog();

  15.             /* WINFORM 背景色 TO WPF 背景色 */
  16.             System.Windows.Media.SolidColorBrush scBrush = new System.Windows.Media.SolidColorBrush();
  17.             System.Windows.Media.Color clr = new System.Windows.Media.Color();

  18.             clr.A = clrDialog.Color.A;
  19.             clr.B = clrDialog.Color.B;
  20.             clr.G = clrDialog.Color.G;
  21.             clr.R = clrDialog.Color.R;
  22.             scBrush.Color = clr;

  23.             if (currCtrl is Label)
  24.             {
  25.                 currCtrl.Background = scBrush;
  26.             }
  27.         }


相关参考代码:


  1. WPF中将System.Drawing.Color转换为System.Media.Brush
  2. System.Windows.Forms.ColorDialog cl = new System.Windows.Forms.ColorDialog();
  3.             if (cl.ShowDialog() == System.Windows.Forms.DialogResult.OK)
  4.             {
  5.                 Brush br = new SolidColorBrush(Color.FromArgb(cl.Color.A, cl.Color.R, cl.Color.G, cl.Color.B));
  6.             }

  7. //color转为brush:
  8. Brush br = new SolidColorBrush(Color.FromRgb(0,0,0));
  9. //string转Color
  10. (Color)ColorConverter.ConvertFromString((string)str);

  11. //Color转string((Color)value).ToString();
  12. string和Brush的转换
  13. Brush color = newSolidColorBrush((Color)ColorConverter.ConvertFromString((string)str));

  14. //Brush转string
  15. ((Brush)value).ToString();
  16. //string转byte[]
  17. System.Text.UnicodeEncoding converter = newSystem.Text.UnicodeEncoding();

  18. byte[] stringBytes = converter.GetBytes(inputString);
  19. //byte[]转string
  20. System.Text.UnicodeEncoding converter = newSystem.Text.UnicodeEncoding();
  21. stringoutputString = converter.GetString(stringByte);

  22.   
  23. 1.由string的rgb数值"255,255,0"转换为color
  24. {
  25.   string[] color_params = e.Parameter.ToString().Split(',');
  26.   byte color_R = Convert.ToByte(color_params[0]);
  27.   byte color_G = Convert.ToByte(color_params[1]);
  28.   byte color_B = Convert.ToByte(color_params[2]);
  29. }
  30. 2.由颜色名称字符串("black") 转化为color
  31. {
  32.   //ColorConverter c = new ColorConverter();
  33.   //object obj = c.ConvertFrom();
  34.   //Color color = (Color)obj;
  35.   Color color = Color.FromRgb(color_R, color_G, color_B);
  36. }
  37. 3.将blend的 8位颜色值转为color
  38.         ///

  39.         /// 将blend的8位颜色值转为color
  40.         ///

  41.         ///
  42.         ///
  43.         public Color ToColor(string colorName)
  44.         {
  45.             if (colorName.StartsWith("#"))
  46.                 colorName = colorName.Replace("#", string.Empty);
  47.             int v = int.Parse(colorName, System.Globalization.NumberStyles.HexNumber);
  48.             return new Color()
  49.             {
  50.                 A = Convert.ToByte((v >> 24) & 255),
  51.                 R = Convert.ToByte((v >> 16) & 255),
  52.                 G = Convert.ToByte((v >> 8) & 255),
  53.                 B = Convert.ToByte((v >> 0) & 255)
  54.             };
  55.         }



参考网址:

http://blog.163.com/dream_perfect@yeah/blog/static/11625921420105732937606/

http://blog.csdn.net/hwt0101/article/details/8090987

相关文章
|
C# Windows
wpf怎么使用WindowsFormsHost(即winform控件)
原文:wpf怎么使用WindowsFormsHost(即winform控件) 使用方法:   1、首先,我们需要向项目中的引用(reference)中添加两个动态库dll,一个是.
5465 0
|
C# 容器
在WPF中使用winform控件WebBrowser
在WPF中使用winform控件WebBrowser
|
前端开发 C#
WPF和Winform中picturebox图片局部放大
原文:WPF和Winform中picturebox图片局部放大 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yangyisen0713/article/details/19152607 ...
1776 0
|
编解码
wpf-MVVM界面自适应:界面自适应及字体自适应
原文:wpf-MVVM界面自适应:界面自适应及字体自适应 1,界面自适应 界面先划分Region,每个填充Region的View不设置Width属性,即可按照Region划分的比例,自适应屏幕分辨率 2.
2102 0
|
C# Windows 安全
WinForm控件与WPF控件的交互
原文:WinForm控件与WPF控件的交互 这个问题其实也可以理解为:怎样在WPF/XAML中使用Winform中的控件(如PictureBox)?首先看看XAML代码:(注意下面加粗的部分)              ...
1088 0
|
C#
WPF下字体模糊的问题
原文:WPF下字体模糊的问题 一直以来,发现WPF中的小字体下的文字变得比较模糊,比如: WPF与Winform字体显示比较: 为了看到更清楚,我们放大点显示:  放得更大些: 中文、日文等亚洲文字的显示也存在着类似的问题:在XP操作系统中的效果:(Winform中)Vista下日文的显示效果:(WPF中) 放大点:XP中:Vista中: 很显示,WPF中变得模糊了。
1393 0
|
C#
WPF中取得系统字体列表
原文:WPF中取得系统字体列表 在GDI+中,我们可以通过如下方式取得系统所有字体: foreach(FontFamily f in FontFamily.
1313 0
|
Shell C# Windows
在Winform或WPF中System.Diagnostics.Process.Start的妙用
原文:在Winform或WPF中System.Diagnostics.Process.Start的妙用 我们经常会遇到在Winform或是WPF中点击链接或按钮打开某个指定的网址, 或者是需要打开电脑中某个指定的硬盘分区及文件夹, 甚至是"控制面板"相关的东西, 那么如何做呢? 答案是使用System.Diagnostics.Process.Start()。
1289 0
|
C# Windows
【WPF】添加自定义字体
原文:【WPF】添加自定义字体 需求:在WPF项目中使用幼圆字体。 步骤: 1、首先要有幼圆TTF字体文件。在C:\Windows\Fonts目录下找,如果系统字体库中没有,就上网下一份,如这里或这里。
1897 0
|
C# 内存技术
好玩的WPF第二弹:电子表字体显示时间+多彩呼吸灯特效按钮
原文:好玩的WPF第二弹:电子表字体显示时间+多彩呼吸灯特效按钮 版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/46457923 我们先来看看Quartz MS字体动态显示系统时间的效果,难度相较于上一篇也要简单许多。
1989 0