问题标签 [ownerdrawn]

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 投票
2 回答
1017 浏览

python - PyQt 中的自定义/所有者绘制控件?

我正在学习 PyQt,想知道是否可以创建自定义/所有者绘制控件,如下图所示:

替代文字 http://lh5.ggpht.com/_5XDoB4MglkY/SpoT51SXR1I/AAAAAAAAFcU/ZXjzmhRyDVA/s400/SearchBox.png

搜索框的右边框上有放大镜图标。PyQt 可以做这种事情吗?谢谢!

0 投票
1 回答
2321 浏览

c# - 在所有者绘制的列表框中使用控件的正确方法是什么?

我正在试验所有者绘制的列表框。我正在向列表框中的特定项目添加一个文本框。但是,当我开始滚动时,文本框不会显示在正确的位置。这样做的正确方法是什么?这是我正在使用的代码。

Form1.cs

Program.cs

Form.Designer.cs

0 投票
1 回答
955 浏览

definition - 什么是所有者绘制的列表框?

请原谅我的无知,但我遇到了这个术语“所有者绘制”列表框。有经验的人可以解释一下那到底是什么吗?

0 投票
2 回答
3402 浏览

c# - 非矩形(所有者绘制)工具提示控件周围的透明度?

我通过响应 Draw 事件来自定义 WinForms ToolTip 控件的外观。我只希望工具提示的某些角是圆角的。我已经完成了所有工作,以至于第一次显示工具提示时,一切看起来都很完美。然而,在随后的显示中,圆角矩形的未填充区域继续具有第一次显示工具提示时背景中的内容。

问题的屏幕截图(我显然无权内联): http ://tinypic.com/r/30xa3w9/3

在图片中,您可以在左上角看到剩余的伪影,我希望它只是透明的(显示灰色背景),如下所示:

tinypic.com/r/mvn8eo/3(也没有添加多个链接的权利)

下面是绘图代码:

GetRoundedRectangle 函数(不包括在内)只是为我想要的圆角几何计算适当的 GraphicsPath。

在将 BackColor 设置为 Color.Transparent 之后,我尝试添加对 args.DrawBackground 的调用,但这只是用表单背景的深灰色填充该区域,而不是实际上是透明的,我认为这是典型的“模拟”透明度赢表格。

附带说明一下,IsBalloon 设置为 true 的非自定义工具提示是具有正确透明度的非矩形。

任何人都可以建议解决此问题吗?

0 投票
1 回答
1949 浏览

c# - c# MeasureItemEvent 处理程序:e.ItemHeight 不变

是我还是我只能为列表框设置 itemheight - e.ItemHeight - 一次?

尽管我在我的所有者绘制的列表框上处理了 MeasureItemEvent 并将 e.ItemHeight 设置为正确的值,但只会使用设置的第一个高度。

哎呀,我是新手,对此感到抱歉。这是代码(DrawItemHandler当然在实际程序中):

0 投票
3 回答
5278 浏览

winforms - 如何在 WinForms 中制作 ownerdraw Trackbar

我正在尝试为滑块拇指制作一个带有自定义图形的轨迹栏。我从以下代码开始:

但它从不调用 OnPaint。还有人遇到这个吗?我以前使用过这种技术来创建一个所有者绘制按钮,但由于某种原因它不适用于 TrackBar。

PS。是的,我看到了问题 # 625728,但解决方案是从头开始完全重新实现控件。我只是想稍微修改一下现有的控件。

0 投票
3 回答
3324 浏览

user-interface - 为什么我的所有者绘制的组合框显示为空?

我正在继承 WTL 组合框,并且我正在绘制组合框的项目的所有者。该控件具有属性CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_OWNERDRAWVARIABLE,我使用混合类 COwnerDraw 来实现 DrawItem() 和 MeasureItem()。当下拉列表关闭时,项目被正确绘制。但是,当下拉列表打开时,组合框控件为空并且不绘制项目。我究竟做错了什么?

WTL 类如下所示:

该类用于对话框,并像这样子类化:

将控件属性更改为CBS_OWNERDRAWFIXED不会更改任何内容。


编辑:感谢 najmeddine 的帮助,我发现我必须处理 WM_PAINT 才能绘制实际的组合框,而不仅仅是下拉列表中的项目。不幸的是,现在我还必须自己绘制组合框控件。有没有办法让 GDI 绘制边框和下拉箭头,这样我只需要绘制控件的“内部”?

0 投票
1 回答
2991 浏览

delphi - 如何获取 TVirtualStringTree 的热节点坐标?

当鼠标悬停在VirtualStringTree的单元格上时,我正在尝试以不同的方式绘制它。如何检测热节点的坐标?我知道有一个 HotNode 属性,但它只返回鼠标光标下的节点。我需要获取该节点的单元坐标(X,Y)。

0 投票
1 回答
615 浏览

.net - 测试项目是否在虚拟 ListView 中可见

我在虚拟和 OwnerDraw 模式下使用 ListView 控件来显示许多项目。有没有办法在不触发绘图事件或 RetrieveVirtualItem 事件的情况下测试某个项目是否可见(在控件的客户区域内)?

问题是,我有一个后台线程,它会定期向列表视图添加更多项目。但是由于某种原因,每次我添加更多项目(增加 VirtualListSize)时,它都会为最后添加的项目触发 RetrieveVirtualItem,即使它远未接近可见范围。而且,当然,我只想绘制实际可见的项目。

有任何想法吗?

0 投票
2 回答
2841 浏览

winforms - 右对齐 TabControl 上的垂直文本

试图让 tabcontrol 的每个选项卡上的文本垂直显示。因为我从来没有涉足控制和什么不是,我有点卡住了。找到了一些代码来让文本显示为好像它向左旋转一样。我希望它显示为好像它在选项卡上向右(垂直)旋转。骨架代码如下: