none
WinForm Aero问题 RRS feed

答案

  • 使用你的例子,改动完成后显示正常。

    另外,如果想要全透明的话,设定 MARGINS 的某个成员为 -1 即可。

    另外检查一下你的 Button 的 FlatStyle,其应为 Standard 或 Flat。

    • 已标记为答案 MaJiXiang 2012年8月28日 1:30
    • 已编辑 EFanZh 2012年8月28日 1:31
    2012年8月28日 1:23

全部回复

  • 弱弱的问一句,毛玻璃效果不就是这样的吗?

    我尝试了下你的代码,把form的毛玻璃效果去掉后,button还是这个样子,很奇怪,同求mvp解答~

    2012年8月20日 6:01
  • 因为代码中将黑色定义为透明颜色了,所以当窗体重绘时所有黑色部分都会被覆盖Aero效果。


    共同努力,共同提高
    kaedei#live.cn My BLOG

    2012年8月21日 2:39
  • 有什么办法可以解决这个情况吗?我查了一下网上的很多例子都和我这个一样

    2012年8月21日 2:48
  • 在主函数中设定

    Application.SetCompatibleTextRenderingDefault(true);

    参见:http://msdn.microsoft.com/zh-cn/magazine/cc163435.aspx


    EFanZh

    2012年8月27日 12:03
  • 你好我尝试过这个方式。只有Label 文本显示为正常。但是Button文本还是透明色
    2012年8月28日 1:03
  • 使用你的例子,改动完成后显示正常。

    另外,如果想要全透明的话,设定 MARGINS 的某个成员为 -1 即可。

    另外检查一下你的 Button 的 FlatStyle,其应为 Standard 或 Flat。

    • 已标记为答案 MaJiXiang 2012年8月28日 1:30
    • 已编辑 EFanZh 2012年8月28日 1:31
    2012年8月28日 1:23
  • 嗯,确实,还和字体的样式有关。我的字体原先是宋体的就不能正常显示为黑色。如果改成微软雅黑或者幼圆就能显示正常...
    2012年8月28日 1:30
  • 我的宋体可以啊。


    EFanZh

    • 已编辑 EFanZh 2012年8月28日 1:36
    2012年8月28日 1:35
  • 直接从工具箱拖出来一个Button字体显示正常吗?我这不行,必须要改默认文本字体
    2012年8月28日 1:38
  • 我的拖出来默认不是宋体。

    不过貌似宋体确实有问题。

    貌似是当显示点阵字体时才有问题,如果更改到非点阵尺寸就正常了。

    一个有意思的东西,当我使用英文字体时,宋体作为后备字体,一半透明,一半正常:


    EFanZh

    • 已编辑 EFanZh 2012年8月28日 1:54
    2012年8月28日 1:48
  • ComboBox好像不行啊。用其他字体也不行

                // 
                // comboBox1
                // 
                this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
                this.comboBox1.Font = new System.Drawing.Font("Comic Sans MS", 15F);
                this.comboBox1.ForeColor = System.Drawing.SystemColors.ControlText;
                this.comboBox1.Items.AddRange(new object[] {
                "你好啊\t",
                "2341",
                "ASDAISH"});
                this.comboBox1.Location = new System.Drawing.Point(889, 543);
                this.comboBox1.Name = "comboBox1";
                this.comboBox1.Size = new System.Drawing.Size(121, 36);
                this.comboBox1.TabIndex = 10;

    2012年8月28日 3:32
  • 看来 SetCompatibleTextRenderingDefault 是不影响 ComboBox 的。

    现在的解决方案目前我能想到的就是手动绘制了。

    设定 ComboBox 的 DrawMode,然后手动处理 DrawItem 事件。

    另外,如果想和系统风格保持一致的话,参考一下 DrawThemeBackground


    EFanZh

    • 已编辑 EFanZh 2012年8月28日 5:03
    2012年8月28日 4:52