V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wizardforcel
V2EX  ›  问与答

如何为 c# winform 写皮肤?

  •  
  •   wizardforcel · 2016-03-16 10:18:42 +08:00 · 3305 次点击
    这是一个创建于 3175 天前的主题,其中的信息可能已经有所发展或是发生改变。

    标准库好像没提供什么自定义皮肤的接口。我不想从现有的控件派生,看到 irisskin 采用了 hook 的方式,有人知道怎么实现吗?

    6 条回复    2016-03-18 14:56:00 +08:00
    huijiewei
        1
    huijiewei  
       2016-03-16 10:29:26 +08:00
    一般都是用 GDI+
    wizardforcel
        2
    wizardforcel  
    OP
       2016-03-16 10:41:34 +08:00
    @huijiewei 我知道是 gdi+,可我不想派生控件覆写 OnPaint 。
    jame
        3
    jame  
       2016-03-16 11:08:19 +08:00
    用 wpf 吧,比 winform 容易做皮肤
    wizardforcel
        4
    wizardforcel  
    OP
       2016-03-16 22:53:42 +08:00 via Android
    @jame 不会像 android xml 一样难用吧。 23333

    再者就是我现有的构思都是用 gdi+写的,移植起来要花一些时间。
    jame
        5
    jame  
       2016-03-18 14:07:33 +08:00
    并不会,微软的东西对开发者挺友好的,可以直接拖控件,也可以写 xml 代码进行配置
    wizardforcel
        6
    wizardforcel  
    OP
       2016-03-18 14:56:00 +08:00
    @jame 。。。我已经找到办法了

    button.Paint += (sender2, e2) => {}; 就可以在类外修改绘制逻辑。然后可以用反射获取所有控件字段,判断控件类型并改为对应的逻辑。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1170 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:59 · PVG 01:59 · LAX 09:59 · JFK 12:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.