删除GDI+中某行的某个部分
Erase a certain part of line in GDI+
我有一条类似箭头的线。我在那行的上面画了一段文字。现在我想擦除行中与文本重叠的部分
我当前的代码是:
SolidBrush *brush1=new SolidBrush(Color::Color(0,167,255));
StringFormat format;
format.SetAlignment(StringAlignmentCenter);
format.SetLineAlignment(StringAlignmentCenter);
graph->DrawLine(myPen,point2,point1);
graph->DrawString(strdata,wcslen(strdata),&font,point2,&format,brush1);
我也试过
AdjustableArrowCap *cap1 = new AdjustableArrowCap(5, 5, true);
Pen *myPen1 = new Pen(Color::Color(0,255,255), width);
myPen->SetCustomEndCap(cap1);
GraphicsPath path;
path.AddLine(point1,point2);
Font font(&FontFamily(L"arial"), 21);
Brush *brush=new SolidBrush(Color::Color(0,255,255,255));
SolidBrush solidBrush(Color(255, 255, 0, 0));
StringFormat format;
format.SetAlignment(StringAlignmentCenter);
format.SetLineAlignment(StringAlignmentCenter);
RectF rectbo;
graph->MeasureString(strdata,wcslen(strdata),&font,PointF::PointF(point2),&rectbo);
graph->DrawLine(myPen,point2,point1);
Region pathRegion(&path);
sta=pathRegion.Intersect(rectbo);
graph->fillRegion(pathRegion,&brush);
graph->DrawString(strdata,wcslen(strdata),&font,point2,&format,brush1);
先画线,然后画文本
- 同时确保已启用笔刷实心/清晰样式
- 因此文本将覆盖文本下方的空格
- 纸张按原样清除/或留下
我为你找到了
- Brush Winapi引用
- 因此为bsClear等效项设置
LOGBRUSH::lbStyle=BS_NULL;
- bsSolid等价的CCD_ 2
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 运算符C++ "delete []"仅删除 2 个前值
- 删除列表中的第n个元素
- 为什么我的双向链表删除函数会删除多个节点?
- 关于比较两个无序数组并删除 a[] 中可以在 b[] 中找到的元素的问题
- 如何删除字符串中的前 2 个字符(如果它有"-")
- 删除列表 c++ 中的最后 3 个元素
- 比较 2 个向量并从第二个向量中删除在第一个 - c++ 中找不到的元素
- 删除功能不适用于串行通信后多个循环中的多个实例
- 如何插入 4 个空格宽的制表符并将它们删除两个空格?
- 从队列中删除第一个元素C++
- 将内容从第一个文件("constituencies")移动到第二个文件("temp")并在之后重命名时,我的文件被删除
- 如何删除部分类?
- 删除第 I 个元素
- 从 AVL 树中删除指向 1 个或多个值的键
- 复制后删除原始数组指针将前 3 个字节设置为 0
- 一个对象的两个指针.删除了一个指针,对象仍然存在
- 使用两个矢量-删除重复项并合并
- 从std::multiset的第i个元素删除到末尾
- 在列表末尾插入一个整数,并在第n个位置删除