最近做了一个屏幕截图的工具,且标记位置,使用的是webbrowser,效果图如下:
关键代码:
private void button_Click(object sender, EventArgs e)
{
string url = "https://www.baidu.com/s?wd=高温线厂家&rn=10&ie=utf8";
WebBrowser webBrowser = new WebBrowser();
webBrowser.Navigate(url);
webBrowser.DocumentCompleted += new
WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
}
void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser webBrowser = (WebBrowser)sender;
// 网页是否加载完
if (webBrowser.ReadyState == WebBrowserReadyState.Complete)
{
// 获取网页高度和宽度,也可以自己设置
int height = webBrowser.Document.Body.ScrollRectangle.Height;
int width = webBrowser.Document.Body.ScrollRectangle.Width;
// 调节webBrowser的高度和宽度
webBrowser.Height = height;
webBrowser.Width = width;
Bitmap bitmap = new Bitmap(width, height); // 创建高度和宽度与网页相同的图片
Rectangle rectangle = new Rectangle(0, 0, 700, height); // 绘图区域
webBrowser.DrawToBitmap(bitmap, rectangle); // 截图
string mark = "目标";
//为图片添加标记
Image image = bitmap;
Bitmap bitmap1 = new Bitmap(image, image.Width, image.Height);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap1);
rectX = 121;
rectY = 200;
//字体大小
float fontSize = 40.0f;
//文本的长度
float textWidth = mark.Length * fontSize;
float rectWidth = mark.Length * (fontSize + 40);
float rectHeight = fontSize + 40;
if (rectHeight < 0)
rectHeight = fontSize + 40;
//声明矩形域
RectangleF textArea = new RectangleF(rectX, rectY, rectWidth, rectHeight);
//定义字体
System.Drawing.Font font = new System.Drawing.Font("微软雅黑", fontSize, System.Drawing.FontStyle.Bold);
//font.Bold = true;
//白笔刷,画文字用
Brush whiteBrush = new SolidBrush(System.Drawing.Color.Red);
//g.FillRectangle(whiteBrush , rectX, rectY, rectWidth, rectHeight);//实心矩形
g.DrawString(mark, font, whiteBrush, textArea);//绘制文字
Pen pen = new Pen(Color.Red, 3);//钢笔
g.DrawRectangle(pen, rectX, rectY, 550, rectHeight);//空心矩形
}
}