Alex Fr은 DrawTools article에 훌륭한 드로잉 도구 모음을 제공했으며 이러한 도구는 Draw Tool Redux의 기초 역할을합니다. 당신이 클래스 ToolText 및 DrawText에를 만들기 위해 필요한 그리기 도구로 텍스트 상자 컨트롤을 추가하려면 http://www.codeproject.com/Articles/4390/AlphaBlendTextBox-A-transparent-translucent-textbo
:
은 또한에서 투명 텍스트 상자를 사용합니다.
internal class ToolText : ToolObject
{
public ToolText()
{
Cursor = new Cursor(GetType(), "Rectangle.cur");
}
public override void OnMouseDown(DrawArea drawArea, MouseEventArgs e)
{
Point p = drawArea.BackTrackMouse(new Point(e.X, e.Y));
TextDialog td = new TextDialog();
td.Location = new Point(e.X, e.Y + drawArea.Top + td.Height);
if (td.ShowDialog() ==
DialogResult.OK)
{
string t = td.TheText;
Color c = td.TheColor;
Font f = td.TheFont;
AddNewObject(drawArea, new DrawText(p.X, p.Y, t, f, c));
}
}
자료 몇 가지 속성, 텍스트, 글꼴 등와의 DrawRectangle 오프 DrawText에 클래스 다음 ToolText 클래스에서
, 나는 텍스트 상자를 가지고 국경없는 형태 "TextDialog"가 표시 드로잉 구현 :
public override void Draw(Graphics g)
{
Pen pen = new Pen(Color);
GraphicsPath gp = new GraphicsPath();
StringFormat format = StringFormat.GenericDefault;
gp.AddString(_theText, _font.FontFamily, (int)_font.Style, _font.SizeInPoints,
new PointF(Rectangle.X, Rectangle.Y), format);
// Rotate the path about it's center if necessary
if (Rotation != 0)
{
RectangleF pathBounds = gp.GetBounds();
Matrix m = new Matrix();
m.RotateAt(Rotation, new PointF(pathBounds.Left + (pathBounds.Width/2), pathBounds.Top + (pathBounds.Height/2)),
MatrixOrder.Append);
gp.Transform(m);
}
g.DrawPath(pen, gp);
rectangle.Size = g.MeasureString(_theText, _font).ToSize();
pen.Dispose();
}
"동적 인 것을 지원하지 않습니다"는 것을 의미합니까 ???? –
사이드 노트 : 게시물의 본문과 제목의 태그에 "감사 노트"를 사용하지 마십시오. 편집 됨, [meta] (http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts)에서 자유롭게 토론하십시오. –
나는 이미지의 맨 위에 글을 써야하지만 그 방법은 문자열 만 받아 들일 수 있지만 필자는 메모장처럼 동적으로 상단 이미지에 써야합니다. (그리고 나는 그 감사를 다시 피할 것이다 ... 나는 C#에서 매우 초심자이다). – user969068