问题标签 [custom-draw]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6122 浏览

qt - QSlider (Qt) 的自定义绘图

我想拦截 QSlider 上的 QPaintEvent 并绘制它。但我找不到关于事物几何形状的细节。我可以知道整个小部件的 rect() ,但是你怎么知道小部件矩形中第一个刻度线或最后一个刻度线的位置?(跟踪通道左右有边距)。还是“手柄”的矩形?

0 投票
1 回答
1464 浏览

java - 使用paintComponent() 和paint() 的Java 自定义绘图

我来自 Objective-C 背景,多年来我一直在 iOS 和 Mac OS 平台上进行开发。我喜欢自定义绘图的概念,因此我想复制我在上述平台上所做的工作。

在 iOS 中,我会调用-drawRect()来绘制一个自定义视图,然后,我可以继续在该绘图之上添加其他可视化组件。我知道 java swing 和 awt 中有等价物,称为paint()and paintComponent()。但是,我不太确定这幅画是如何进行的。我不知道何时调用 super 方法(开始还是结束?)以及如何将其他组件添加到自定义绘制的组件中(自定义绘制有时出现在顶部,有时出现在下方)。

有人可以对此有所了解吗?

我已经阅读了一些关于何时使用什么的信息,但我仍然不能 100% 确定,所以有人可以解释一下何时使用什么paint()以及何时使用paintComponent()吗?

0 投票
1 回答
1365 浏览

c++ - 在 CListCtrl Customdraw 函数中禁用或灰显行

我在 MFC 对话框中有一个 CListCtrl。我要做的是根据条件禁用一些项目,以便用户无法选择它。直到现在我已经更改了颜色,但这不是正确的解决方案。我的代码如下所示:

我还找不到有关如何禁用行的任何参考。

另一个问题,即使在管理禁用部分之后,如何在这个自定义绘图功能中获取与项目相关的数据?可以使用 pLVCD->nmcd.lItemlParam 来调用 GetItemData()。请帮忙。

0 投票
8 回答
34588 浏览

c# - TreeNode 在 TreeView 未聚焦时选择了 BackColor

有没有一种简单的方法可以让选定的 TreeNode 在 TreeView 没有焦点时保留其 SystemColors.Highlight BackColor?因为即使 HideSelection 设置为 false,所选的 BackColor 也几乎是看不到的。

TreeView 具有焦点时选定的 TreeNode:

专注

TreeView 没有焦点时选择的 TreeNode:

不专心

提前致谢。

编辑:我知道我可以将 DrawMode 设置为 OwnerDrawAll,然后添加一个自定义 DrawNode 事件。我之前确实尝试过,我遇到的问题是我不知道如何正确绘制 TreeNode 的相应 ImageKey。

0 投票
1 回答
834 浏览

c++ - 在 CToolbar 自定义对话框中自定义绘制图标

我正在尝试根据我的需要自定义CToolbar类(MFC 库)(启用对具有抗锯齿功能的 32 位图标的支持)。
为此,我使用CToolbar 提供的自定义绘制方法,在其中绘制我自己的图标。
图标渲染良好,一切正常,直到用户打开自定义对话框- 他可以在其中选择所需的图标并按照他的喜好排列它们(这是 MFC 工具栏的标准自定义对话框)。

问题:在自定义对话框中,为所有按钮绘制了相同的图像。

以下是我项目中的代码片段:

留言图:

我已经进行了很多调试,并且在自定义窗口出现时设法得到了这一点 - 发送到 CustomDraw 的与要绘制的项目(按钮)相关的信息被遗漏,总是发送零索引。

如果我注释掉 *pResult = CDRF_SKIPDEFAULT; 当系统能够根据它们的索引在自定义对话框中绘制图标时(但只有 4 位深度) - 因此我认为我在自定义绘制中省略了重要的东西。

我已经阅读了 MSDN 中所有可能的文章以及与自定义绘制相关的其他来源,但没有提到自定义窗口中的图标问题。

所以如果有人遇到过类似的问题,请给我一个提示吗?提前致谢!

0 投票
1 回答
855 浏览

winapi - 如何绘制组合框的静态部分

我有一个带有样式的自定义绘制组合框,CBS_DROPDOWNLISTCBS_OWNERDRAWVARIABLE可以绘制下拉列表的项目,但是当用户选择一个项目时,它是在组合框静态部分中绘制的[选择项目并显示选择后保持可见的组合部分],我想给它一个自定义文本,如下图所示

在此处输入图像描述

但我无法确定我找到了这样的代码

但是当我使用它时,我得到了所有项目CtlType == ODT_COMBOBOX,当我调试上面的代码时,它返回ODT_COMBOBOX静态部分,而对于下拉列表的项目,它返回ODT_LISTBOX

我想知道如何解决这个问题,如何检测到我正在绘制下拉列表中的静态部分或常规项目?

0 投票
1 回答
1124 浏览

c++ - 正确确定自定义绘图的复选框状态

简介及相关资料:

我需要有主题的公共控件,但具有不同的文本颜色和透明背景。我遇到了这个问题中详细记录的问题

我通过处理取得了一些进展,NM_CUSTOMDRAW并决定先完成复选框

问题:

我在确定复选框的状态时遇到了困难,所以我无法传递正确的参数DrawThemeBackground()

代码胜于雄辩,所以这里是片段:

文本颜色和文本背景在WM_CTLCOLORSTATIC处理程序中设置:

我在#pragma comment和中包含了常用控件 6 InitCommonControlsEx()

问题:

我现在需要的是为DrawThemeBackground. 有人可以帮我弄这个吗?

谢谢你。

最好的祝福。

0 投票
1 回答
616 浏览

c++ - 具有透明文本背景而不是默认白色的 Treeview 节点

我正在使用自定义绘图来尝试创建透明树视图(现在我正在测试启用视觉样式时)。

我的CDDS_PREPAINT处理程序工作正常,树正确绘制了父级的背景位图。

我试图CDDS_ITEMPREPAINT在我使用SetBkColor( ((LPNMCUSTOMDRAW)lParam)->hdc, TRANSPARENT );和 return的地方添加处理程序CDRF_NEWFONT,但失败了。节点使用默认的白色背景绘制。

如何使项目的文本背景透明?

谢谢你。

此致。

以下是说明性代码片段:

0 投票
1 回答
636 浏览

delphi - 用 TabStop 和 FocusRect 实现 TLabel?

我正在使用 Delphi7,我正在尝试实现一个 LinkLabel,就像你可以在 Windows Vista 及更高版本的控制面板下找到的那样。

在悬停时更改光标/颜色非常简单,我唯一需要做的就是让 TLabel 接收制表位并在其周围绘制一个焦点矩形

关于如何做到这一点的任何想法?我了解 TLabel 由于其性质而不会收到标签。还有 TStaticText 确实接收选项卡,但它也没有焦点矩形。

0 投票
1 回答
747 浏览

listview - 带有 NM_CUSTOMDRAW 的 Listview 项目闪烁

每个人。 http://i.stack.imgur.com/ugfY4.jpg

我有这种列表视图颜色编辑器,每个项目代表不同的颜色。因此,用户单击 COLOR_CODE 子项,颜色选择器更新为选定的 HSV 值,然后用户将颜色选择器光标拖到托盘上,COLOR_CODE 子项应实时更新以及颜色 ID 文本。大多数情况下,更新执行得非常流畅,但有时它只是以某种方式闪烁 - ---- 它以一种非常闪烁的方式发生,就好像没有时间快速绘制它一样。

我已经开始搜索,发现很多帖子,都导致双缓冲。好的,我已经在我的列表视图中启用了 DOUBLE BUFFERING

也试过这样

但这并没有帮助。这是我的自定义绘制例程它基本上采用 ID subItem - 0xffb400 中写入的任何字符串,并将其转换为 COLORREF,然后将 subItem 2 的 BG 颜色设置为结果颜色;

以防万一您认为 colorrefFromString 是我提供的清单:

现在的问题:为什么我有闪烁?