electron学习一BrowserWindow

*BrowserWindow 创建和控制浏览器窗口

进程:主进程

一、创建程序窗口

	//主进程中用下面代码
	const { BrowserWindow,app} = require('electron')
	//或者在渲染进程中用“remote”
	// const { BrowserWindow} = require("electron").remote
	
	app.on('ready',()=>{
	    let win = new BrowserWindow({ width:600,height:800})//规定程序的窗口大小
	    win.on('closed',()=>{  //关闭窗口
	        win = null
	    })
	    
	//加载远程url
	    win.loadURL("http://www.baidu.com")
	//或者加载本地的html文件
	// win.loadURL(`file://${__dirname}/app/index.html`)
	})

效果图如下:
效果图
二、创建一个无边框窗口

无边框窗口是不带外壳(包括窗口边框、工具栏等),只含有网页内容的窗口。

  1. 要创建无边框窗口,只需在 BrowserWindow 的 options 中将 frame 设置为 false:
    在这里插入图片描述
    效果图如下:
    在这里插入图片描述
    注:将frame设为false会把标题和窗口控制按钮(红绿灯)全部隐藏

2.titleBarStyle:“hidden”
返回一个隐藏标题栏的全尺寸内容窗口,在左上角仍然有标准的窗口控制按钮(俗称“红绿灯”)。

let win = new BrowserWindow({ width:600,height:800,titleBarStyle:"hidden"})

3.titleBarStyle:“hiddenInset”
返回一个另一种隐藏了标题栏的窗口,其中控制按钮到窗口边框的距离更大。

let win = new BrowserWindow({ width:600,height:800,titleBarStyle:"hiddenInset"})

4.titleBarStyle: ‘customButtonsOnHover’
使用自定义的关闭、缩小和全屏按钮,这些按钮会在划过窗口的左上角时显示。

let win = new BrowserWindow({ width:600,height:800, titleBarStyle: 'customButtonsOnHover'})

5.透明窗口
通过将 transparent 选项设置为 true, 还可以使无框窗口透明

let win = new BrowserWindow({ width:600,height:800, transparent:true})

6.点击穿透窗口
要创建一个点击穿透窗口,也就是使窗口忽略所有鼠标事件

win.setIgnoreMouseEvents(true)

三、显示窗口

1.使用ready-to-show事件
在加载页面时,渲染进程第一次完成绘制时,会发出 ready-to-show 事件 。 在此事件后显示窗口将没有视觉闪烁:

 win.once('ready-to-show',()=>{
      win.show()
   })

2.设置 backgroundColor
对于一个复杂的应用,ready-to-show 可能发出的太晚,会让应用感觉缓慢。 在这种情况下,建议立刻显示窗口,并使用接近应用程序背景的 backgroundColor(值只能用十六进制值)

let win = new BrowserWindow({ backgroundColor: '#2e2c29' })

四、父子窗口

const { BrowserWindow,app} = require('electron')
app.on('ready',()=>{
    let top = new BrowserWindow({backgroundColor:"#000"})
    let child = new BrowserWindow({ parent: top,backgroundColor:"#ccc"})
    child.show()
    top.show()
})

运行可见,灰色的窗口在黑色窗口之上

总结

总结:titleBarStyle:“hidden”、.titleBarStyle:"hiddenInset"和titleBarStyle: 'customButtonsOnHover’窗口效果大概是一样的。重点是怎样创建一个窗口界面、隐藏标题栏(titleBarStyle:“hidden”) 和 父子窗口。

我是前端小白,有编辑错误欢迎指正,谢谢

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先,你需要在你的Electron应用程序中安装js-web-screen-shot插件。可以使用npm安装此插件: ``` npm install js-web-screen-shot --save ``` 然后,你需要在你的Electron应用程序中加载该插件。你可以在你的主进程中使用require()函数: ``` const webshot = require('js-web-screen-shot'); ``` 接下来,在创建新的BrowserWindow时,你可以在其webContents中加载该插件。例如: ``` const { BrowserWindow } = require('electron'); const webshot = require('js-web-screen-shot'); let win = new BrowserWindow({ width: 800, height: 600 }); win.webContents.on('dom-ready', () => { win.webContents.executeJavaScript(webshot.load()); }); ``` 在这个例子中,当新的BrowserWindow的webContents准备就绪时,它会调用js-web-screen-shot的load()方法来加载该插件。现在,你就可以在新的BrowserWindow中使用js-web-screen-shot插件了。例如,你可以使用它来截取屏幕截图: ``` const { BrowserWindow } = require('electron'); const webshot = require('js-web-screen-shot'); let win = new BrowserWindow({ width: 800, height: 600 }); win.webContents.on('dom-ready', () => { win.webContents.executeJavaScript(webshot.load()); win.webContents.executeJavaScript(webshot.captureScreenshot('screenshot.png')); }); ``` 在这个例子中,当新的BrowserWindow的webContents准备就绪时,它会调用js-web-screen-shot的load()方法来加载该插件,然后调用它的captureScreenshot()方法来截取屏幕截图并将其保存为screenshot.png文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值