【问题标题】:C# + Custom graphics on controls?C# + 控件上的自定义图形?
【发布时间】:2020-11-15 23:16:55
【问题描述】:

我只是想知道是否有办法创建我自己的自定义 winforms 控件? 我一直在用 Visual Studio 2008 掠夺,现在正在尝试做一些 c# 应用程序。由于标准的winforms限制,GUI最终看起来很糟糕。

我注意到我可以向按钮添加图像,但没有悬停效果。或者,悬停效果使整个按钮区域变灰。我不想要这些,我只想为控件创建自己的图形,或者找到一些已经存在的免费(也许是开源的)控件。

对此有任何启示,有人吗? :)

【问题讨论】:

    标签: c# winforms user-controls


    【解决方案1】:

    您可以从头开始编写完整的 Winforms 控件,自己完成所有绘制和输入处理 - 您只需创建一个派生自“Control”的类并继续使用它。

    制作一个与 VS 设计器很好地集成的一流控件有很多好处,因此人们倾向于从具有他们想要的大部分行为的现有控件中派生出他们的自定义控件。

    这是一个不错的起点:http://msdn.microsoft.com/en-us/library/6hws6h2t.aspx

    【讨论】:

      【解决方案2】:

      我很疑惑,你是做WinForms开发的,但是在cmets说你做了好几个月的WPF开发,但是WPF还不够好,因为它不是跨平台的。

      WinForm 是如何跨平台的,你有没有看到 WinForms 在 Mac 上通过 X11 绘制时在单声道下看起来有多丑。

      如果您想要风格和跨平台,请选择 Flex 或 Silverlight,因为您已经知道 WPF,我会选择 Silverlight 路线。

      它是跨平台的,具有 WPF 的所有优点,但代价是减少了开箱即用的功能。

      【讨论】:

      • 有趣。尽管我还没有实现任何实际代码,但我在 WPF 开发方面已经取得了很大进展。只是花了无数个小时做设计。一切都停滞不前,因为我找不到关于 WPF 的足够好的信息以及如何做我想做的事。现在我又捡起来了。
      • 但是我可以创建一个基于 SilverLight 的独立应用程序,而不是通过网络浏览器吗?因为这也是重点,我不想依赖互联网访问。也许我使用 webbrowser 元素并通过那里托管它?那可能很聪明。
      • Silverlight 3.5 的最新“即将发布”版本具有独立应用程序。否则,您可以自行托管浏览器组件。
      【解决方案3】:

      首先 - 查看 WPF 或在 winforms 中托管一些 WPF 元素可能更务实(支持 - like so)。除此之外 - 如果您愿意,您可以完成所有自己的绘画;但工作量很大。

      【讨论】:

      • 是的,已经了解 Expression Blend 几乎和 Photoshop 一样好! :) 这是梦幻般的!但我不希望该应用程序只能在 Windows 平台上运行。这才是真正的问题。 Spotify 到底写了什么?他们已经能够做到。那我应该对吗? :)
      【解决方案4】:

      您为什么不使用 WPF?如果你沿着这条路线走,你会有更多的 UI 控制。

      如果您必须使用 WinForms,那么有许多商业解决方案,例如 DevExpress。如果你真的想要你自己的外观和感觉,那将是很多工作。

      【讨论】:

      • 我知道,在过去的一年里我已经做了很多 WPF 并且已经了解了很多。 “问题”可以说是我正在开发的应用程序应该能够移植到 Windows 以外的其他系统。据我所知,WPF不能移植对吧?
      • WPF 可以很容易地移植到 SilverLight。但不,它还不能移植到 Mono 上运行。看来您必须以艰难的方式做到这一点。
      【解决方案5】:

      是的。您可以创建自己的控件。它被称为用户控件。只需选择添加-> 和用户控制。

      如果你想让你的窗体看起来花哨,WPF 是一个不错的选择。

      【讨论】:

      • 一个“用户控件”实际上是用于托管其他控件的控件 - 听起来他想要一个“自定义控件”
      • 我只是希望能够设计自己的 GUI,仅此而已。不知道我应该如何使用 winforms 执行此操作,因为我不是程序员。我是一名设计师,WPF 非常好。这只是让它在 Linux 和 MAC 上运行的一部分,可能会做出决定。
      猜你喜欢
      • 1970-01-01
      • 2019-04-04
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多