回答
试试这个。
我创建这是指从哪个控制你在绘制油漆处理程序调用的方法。为了简单起见,我刚才在我的窗体本身。你可能有一个面板或其他控制。
该方法接受的图形对象时,光标的规模和从哪里开始抽出上部/左位置。规模只是高度,但所有数学都是相对于高度进行的。你可以用你想要的方式调整这些数字。
private void Form1_Paint(object sender, PaintEventArgs e)
{
DrawCaret(e.Graphics, 30, new Point(20, 20));
DrawCaret(e.Graphics, 50, new Point(100, 100));
}
private static void DrawCaret(Graphics g, int scale, Point loc)
{
g.SmoothingMode = SmoothingMode.HighQuality;
int height = scale;
int width = scale/10;
int rectBase = scale/5;
g.FillRectangle(Brushes.Black, loc.X, loc.Y, width, height);
var path = new GraphicsPath();
path.AddPolygon(new[]
{
new Point(loc.X+width, loc.Y),
new Point(loc.X+width+rectBase/2, loc.Y+rectBase/2),
new Point(loc.X+width, loc.Y+rectBase),
});
g.FillPath(Brushes.Black, path);
}
此示例产生以下输出:
'游标'是你用鼠标移动的箭头。他正在谈论插入符号,文本框中的垂直条。 – 2011-04-30 16:42:39
是的,我在阅读你的答案后才回想起来。相应地重构代码示例。 – 2011-04-30 16:44:36
谢谢。这种方法唯一的问题是它不支持ClearType。 – DxCK 2011-04-30 19:00:46
这就是所谓的 '^符号'。 winapi函数没有被winforms包装,你必须拼凑它们。开始reading here。你会在我的回答here中找到代码。
- 1. 在异步任务onPostExecution后在当前位置绘制标记
- 2. 如何在MATLAB绘图中更改“标记”位置?
- 3. 如何解析XML文件标记位置和在地图上绘制
- 4. 如何用x标记绘制圆圈?
- 5. flex位图数据绘制 - 如何设置在哪里绘制
- 6. 使用地理定位更新标记位置后无法绘制Leaflet
- 7. 在nutiteq上绘制标记时位图大小超过32位
- 8. 在同一坐标中绘制/分散位置和标记大小
- 9. 绘制两个标记
- 10. “@”位置标记如何工作?
- 11. 如何标记-webkit-transform-origin的位置?
- 12. 如何标记y轴上的位置?
- 13. web.config位置标记
- 14. 如何在图形对象的任何位置绘制位图?
- 15. 如何绘制位图
- 16. Android:在特定位置绘制位图,拒绝绘制
- 17. 可移动标记位置 - 刷新标记位置(GMaps4JSF 1.1.3-u3)
- 18. 如何分配当前地理坐标以绘制从当前位置到目标位置的路径?
- 19. 在坐标轴上绘制标记
- 20. 在GMAPS API V3上绘制标记,并将位置发送到Google Fusion
- 21. 如何在绘制时控制圆的大小和位置
- 22. 如何设置所有者绘制工具提示的位置?
- 23. 设置可绘制位置内按钮
- 24. 如何控制quadraticCurve用鼠标位置处理位置?
- 25. 标记在我的位置?
- 26. ORACLE:重置高位标记
- 27. 如何保存地图绘制状态(多边形,折线,标记,标记)
- 28. 如何返回maya python中绘制光标的ws xyz位置?
- 29. 如何在unity3D中以鼠标位置的方向绘制x长度的线?
- 30. 如何在OpenLayers3上绘制连接标签到其位置的线条
为什么你写你自己的TextBox控件 – 2011-04-30 16:27:13
@Matti:.NET所有者绘制控件的乐趣! – 2011-04-30 16:27:55
*非常*很难让所有者绘制的文本框正常工作。一旦你开始像这样重新发明轮子,你会注意到你错过了很多在Windows实现中被认为是理所当然的基本东西。您的控件不支持从右向左的语言(并非世界上的每个人都喜欢阅读英文),您不会获得IME支持等等。所以,重要的是,重新考虑你是否真的想要推出自己的文本框。如果这不是用于个人学习目的,答案是**否**。 – 2011-04-30 16:34:00