在Electron中,不遵循我们的C ++节点插件的高DPI设置/标志。直到与Electron打包为止,节点插件才可以正常工作。
[我们的节点插件在另一个过程中,但是在Electron内部被调用,使用SDL创建了一个新窗口,该窗口试图通过SDL_WINDOW_ALLOW_HIGHDPI
启用DPI
我们不使用new BrowserWindow
,并且在这种情况下期望Chrome调整大小!
在以下情况下不起作用:
electron .
运行Info.plist High Resolution Capable
中的密钥设置为YES-电子似乎会自动生成默认的info.plist。 (我们不会自行设置任何内容),也不会设置--extend-info
电子版本:] >>
操作系统:
程序应以高DPI模式显示,并尊重传递给SDL的内容
例如,我们应该收到一个SDL_WINDOWEVENT,它告诉我们以新的宽度和高度调整纹理的大小。
[将程序窗口(不是由Electron创建的窗口)移到Retina屏幕(macbook pro)上时,它也不会接收新的渲染器输出来调整大小,也不会表现出很高的DPI感知能力
当我们分别运行节点附加组件时,只要将屏幕移动到另一个DPI屏幕,每次移动窗口都会重新配置纹理。
在SDL中设置以下内容:
// init SDL_Window *window = SDL_CreateWindow( "App name", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI) SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); // configure texture SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear"); int o_width = 0, o_height = 0; int ret = SDL_GetRendererOutputSize(ctx->renderer, &o_width, &o_height); if (ret != 0) { throw runtime_error("Could not get output renderer size\n"); } printf("Output renderer size: %dx%d\n", o_width, o_height);
问题
electron .
时如何确保在开发人员中有效?在Electron中,不遵循我们的C ++节点插件的高DPI设置/标志。直到与Electron打包为止,节点插件才可以正常工作。我们的节点插件在另一个...
解决方案:在Electron中,在主进程的Info.plist中设置的任何内容都不会等效地应用于Electron Helper进程,因为它们具有自己的Info.plist。