12 个解决方案
#1
不明白LZ要画什么样的线,实现什么样的效果。--->当前热点控件,始终在最前面。
#2
放个btn在事件中画线。由于你画线是的PAINT中,子控件在父控件后绘制,所以挡住了
#3
因为你在form上画的,而控件在它上面,肯定会挡住下面画的线。一个简单的方法是,把form上的控件背景色都设置成透明色,这样会把线的颜色透上来。还有就是你要进行计算了,窗体上的这条线,经过控件哪里,然后在该控件上画相应的部分。肯定是用第二种方法,稍微写些算法。
#4
“直接绘图”,这个太低级了。
你可以使用高级的(可能是在vb兼容类库中的)Line等控件。
#5
如果你想提高效率,你应该自己学会开发控件的技术。
不要胡乱“绘图”。应该开发控件。
不要胡乱“绘图”。应该开发控件。
#6
Panel Height=1 设置背景
#7
用GDI绘直线
protected void Page_Load(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap(200, 150);//创建位图
Graphics g = Graphics.FromImage(bitmap);//创建画布
g.Clear(Color.WhiteSmoke);//清空背景色
Pen myPen = new Pen(Color.Blue, 2);//创建画笔对象
g.DrawLine(myPen, 20, 30, 120, 30);//绘制直线
System.IO.MemoryStream ms = new System.IO.MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();//清除缓存区中所有内容
Response.ContentType = "image/Gif";//设置输出图片类型
Response.BinaryWrite(ms.ToArray());//写入HTTP流输出到页面上
}
protected void Page_Load(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap(200, 150);//创建位图
Graphics g = Graphics.FromImage(bitmap);//创建画布
g.Clear(Color.WhiteSmoke);//清空背景色
Pen myPen = new Pen(Color.Blue, 2);//创建画笔对象
g.DrawLine(myPen, 20, 30, 120, 30);//绘制直线
System.IO.MemoryStream ms = new System.IO.MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();//清除缓存区中所有内容
Response.ContentType = "image/Gif";//设置输出图片类型
Response.BinaryWrite(ms.ToArray());//写入HTTP流输出到页面上
}
#8
是不是可以这样搞,搞一个截图控件。只要触发开始截图的时候,先截取当前软件界面,用一个image把界面挡住,截图画在image上。然后在image上画线。
#9
那所有控件就都点不了了?
#10
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//在所有控件之上画线
var gp = new GraphicsPath();
gp.AddLines(new[] {new Point(0, 0), new Point(300, 300), new Point(302, 300), new Point(2, 0), new Point(0, 0)});
var line = new Control
{
Region = new Region(gp),
Bounds = new Rectangle(50, 50, 300, 300),
BackColor = Color.Red
};
Controls.Add(line);
line.BringToFront(); //保证线在上边
//画个button对比用
Controls.Add(new Button {Bounds = new Rectangle(100, 100, 200, 200)});
}
}
}
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//在所有控件之上画线
var gp = new GraphicsPath();
gp.AddLines(new[] {new Point(0, 0), new Point(300, 300), new Point(302, 300), new Point(2, 0), new Point(0, 0)});
var line = new Control
{
Region = new Region(gp),
Bounds = new Rectangle(50, 50, 300, 300),
BackColor = Color.Red
};
Controls.Add(line);
line.BringToFront(); //保证线在上边
//画个button对比用
Controls.Add(new Button {Bounds = new Rectangle(100, 100, 200, 200)});
}
}
}
#11
画根斜线会怎么样?
#12
#1
不明白LZ要画什么样的线,实现什么样的效果。--->当前热点控件,始终在最前面。
#2
放个btn在事件中画线。由于你画线是的PAINT中,子控件在父控件后绘制,所以挡住了
#3
因为你在form上画的,而控件在它上面,肯定会挡住下面画的线。一个简单的方法是,把form上的控件背景色都设置成透明色,这样会把线的颜色透上来。还有就是你要进行计算了,窗体上的这条线,经过控件哪里,然后在该控件上画相应的部分。肯定是用第二种方法,稍微写些算法。
#4
“直接绘图”,这个太低级了。
你可以使用高级的(可能是在vb兼容类库中的)Line等控件。
#5
如果你想提高效率,你应该自己学会开发控件的技术。
不要胡乱“绘图”。应该开发控件。
不要胡乱“绘图”。应该开发控件。
#6
Panel Height=1 设置背景
#7
用GDI绘直线
protected void Page_Load(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap(200, 150);//创建位图
Graphics g = Graphics.FromImage(bitmap);//创建画布
g.Clear(Color.WhiteSmoke);//清空背景色
Pen myPen = new Pen(Color.Blue, 2);//创建画笔对象
g.DrawLine(myPen, 20, 30, 120, 30);//绘制直线
System.IO.MemoryStream ms = new System.IO.MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();//清除缓存区中所有内容
Response.ContentType = "image/Gif";//设置输出图片类型
Response.BinaryWrite(ms.ToArray());//写入HTTP流输出到页面上
}
protected void Page_Load(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap(200, 150);//创建位图
Graphics g = Graphics.FromImage(bitmap);//创建画布
g.Clear(Color.WhiteSmoke);//清空背景色
Pen myPen = new Pen(Color.Blue, 2);//创建画笔对象
g.DrawLine(myPen, 20, 30, 120, 30);//绘制直线
System.IO.MemoryStream ms = new System.IO.MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();//清除缓存区中所有内容
Response.ContentType = "image/Gif";//设置输出图片类型
Response.BinaryWrite(ms.ToArray());//写入HTTP流输出到页面上
}
#8
是不是可以这样搞,搞一个截图控件。只要触发开始截图的时候,先截取当前软件界面,用一个image把界面挡住,截图画在image上。然后在image上画线。
#9
那所有控件就都点不了了?
#10
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//在所有控件之上画线
var gp = new GraphicsPath();
gp.AddLines(new[] {new Point(0, 0), new Point(300, 300), new Point(302, 300), new Point(2, 0), new Point(0, 0)});
var line = new Control
{
Region = new Region(gp),
Bounds = new Rectangle(50, 50, 300, 300),
BackColor = Color.Red
};
Controls.Add(line);
line.BringToFront(); //保证线在上边
//画个button对比用
Controls.Add(new Button {Bounds = new Rectangle(100, 100, 200, 200)});
}
}
}
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//在所有控件之上画线
var gp = new GraphicsPath();
gp.AddLines(new[] {new Point(0, 0), new Point(300, 300), new Point(302, 300), new Point(2, 0), new Point(0, 0)});
var line = new Control
{
Region = new Region(gp),
Bounds = new Rectangle(50, 50, 300, 300),
BackColor = Color.Red
};
Controls.Add(line);
line.BringToFront(); //保证线在上边
//画个button对比用
Controls.Add(new Button {Bounds = new Rectangle(100, 100, 200, 200)});
}
}
}
#11
画根斜线会怎么样?