winforms 如何在webview 2控件上放置/添加图像?

slhcrj9b  于 2023-02-16  发布在  其他
关注(0)|答案(2)|浏览(205)

我使用webview2控件而不是常规的网络浏览器,因为有了webview2,我可以使用微软边缘浏览器浏览网站。
用法:

public Form1()
{
    InitializeComponent();

    webView21.Source = new Uri("https://microsoft.com");
}

结果是:

现在我想从我的硬盘驱动器添加我自己的图像,这样图像将在webview控件上。就像我把图像放在picturebox控件上一样。
我不想像导航到图像的URI那样加载图像,而是把图像放在控件上。
以防万一这是WebView2的官方microsoft webview2控制站点。
例如,我有一个天气雷达png图像,我想把它像这样放在webview2控件上:

8yparm6h

8yparm6h1#

WinForms中,您可以将 any 控件(例如PictureBox)添加到任何 other 控件(例如WebView2)的Controls集合中,从而使 *any * 控件(例如PictureBox)优先于后者显示。

public partial class MainForm : Form
{
    public MainForm() => InitializeComponent();
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        const int WIDTH = 500, HEIGHT = 250;

        // Path to image on the local hard drive.
        string pathToImageOnLocalHardDrive = Path.Combine(
            AppDomain.CurrentDomain.BaseDirectory,
            "Images",
            "0n0cW.jpg"
        );

        PictureBox pictureBox = CreatePictureBox(
            path: pathToImageOnLocalHardDrive,
            maxWidth: WIDTH,
            maxHeight: HEIGHT
        );
        pictureBox.Location = new Point(
            webView21.Right 
            - pictureBox.Width
            - SystemInformation.VerticalScrollBarWidth - 1,
            webView21.Bottom - pictureBox.Height - 1);

        webView21.Controls.Add(pictureBox);
    }
    .
    .
    .
}

要使图片框执行此操作:

private PictureBox CreatePictureBox(
    string path,
    int maxWidth, 
    int maxHeight)
{
    PictureBox newPictureBox = new PictureBox
    {
        SizeMode = PictureBoxSizeMode.StretchImage,
        BackColor = Color.Aqua,
        Image = Bitmap.FromFile(path),
    };
    var measure = (Bitmap)newPictureBox.Image;
    float scaleWidth = maxWidth / (float)measure.Width;
    float scaleHeight = maxHeight / (float)measure.Height;
    float allowedScale = Math.Min(scaleWidth, scaleHeight);
    newPictureBox.Size = new Size
    {
        Width = (int)(allowedScale * measure.Width),
        Height = (int)(allowedScale * measure.Height),
    };
    return newPictureBox;
}

映像路径

如果添加更多图像,请确保为其设置此属性:

4xy9mtcn

4xy9mtcn2#

简单的答案是,这是不可能的。
浏览器需要一个指针来知道它需要向你展示什么。
我相信你正在寻找的是类似this的东西。
但这并不是直接加载到webView中,而是用来构建一个带有数据库的网站,你会将其加载到你的webview中。

相关问题