111,094
社区成员




GraphicsContainer containerState = gMem.BeginContainer();using (Graphics G = Graphics.FromHwnd(this.Handle)) {
//定义临时图层
using (Bitmap B = new Bitmap(50, 50)) {
using (Graphics G2 = Graphics.FromImage(B)) {
G2.DrawString("这是翻过来的文字", this.Font, Brushes.Black, new Point(0, 0));
}
//将临时图层以Width负长度绘制得到左右倒图(Height负长度将得到垂直倒图)
G.DrawImage(B, new Rectangle(100, 100, -50, 50), new Rectangle(0, 0, B.Width, B.Height), GraphicsUnit.Pixel);
}
}
//目标:在(100, 100)处写字符,字符下面画线,然后将字符在原位置上下翻转
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
//在(100,100) + 字符高度 的地方划线
g.DrawLine(Pens.Black, new PointF(100, DefaultFont.Height + 100), new PointF(200, DefaultFont.Height + 100));
//变换,字符在原位置上下翻转
g.TranslateTransform(0, -100 - DefaultFont.Height / 2, MatrixOrder.Prepend);
g.ScaleTransform(1, -1, MatrixOrder.Append);
g.TranslateTransform(0, 100 + DefaultFont.Height / 2, MatrixOrder.Append);
//在(100, 100)处写字符
g.DrawString("abcdefg", DefaultFont, Brushes.Black, new PointF(100, 100));
}
gMem.TranslateTransform(0, (-currentPf.Y - movePf.Y - this.Font.Height) / 2, MatrixOrder.Prepend);
gMem.ScaleTransform(1, -1, MatrixOrder.Append);
gMem.TranslateTransform(0, (currentPf.Y + movePf.Y + this.Font.Height) / 2, MatrixOrder.Append);