C++应用程序比.NET具有更高的性能,因此许多应用程序都是用C++编写的.
但是原始的C++没有GUI支持,因此Qt类似框架可以帮助开发人员开发桌面GUI应用程序但是大多数应用程序也不是QT应用程序.
对于像Adobe Photoshop这样的大型跨平台C++应用程序,最常用的GUI框架/库是什么?Qt是否适用于大型应用?如果没有,使用这些库比Qt等更常见的跨平台库有什么好处?
将画布从缓冲区画布复制到页面上的画布时遇到一些困难。到目前为止,我已经构建了一个渲染对象、一个关卡对象,并且我有了主游戏循环(目前只是一个启动函数)。
我可以很好地写入渲染对象中的缓冲区画布(如果我添加 document.body.append() 语句,画布会成功地将必要的内容追加到文档中),但我无法从缓冲区画布复制到我的主要画布。请参阅下面的我的代码片段:
function Renderer(bufferWidth, bufferHeight) {
var c=document.createElement('canvas');
var ctx=c.getContext('2d');
c.width=bufferWidth;
c.height=bufferHeight;
this.getBufferContext = function() { return ctx; };
this.getBufferElement = function() { return c; };
this.drawToCanvas = function(canvasCtx) {
canvasCtx.drawImage(c,0,0);
};
}
var c = document.getElementById('mycanvas');
var ctx = c.getContext('2d');
var render = new Renderer(c.width, c.height);
var level1 = new Level('images/imagequality.png');
level1.Draw(render.getBufferContext());
render.drawToCanvas(ctx);
Run Code Online (Sandbox Code Playgroud)
请注意,渲染器位于单独的文件中,并使用 HTML 页面中的脚本标记加载。
如前所述,drawToCanvas() 函数似乎无法成功地将数据从一个画布复制到另一个画布。附加我的源画布确认它包含预期的数据。
编辑:我在下面列出了我的级别代码。
function Level(mapname) {
var map=new Image();
map.src=mapname;
this.Draw = function(renderer) {
map.onload = function() { renderer.drawImage(map,0,0); };
}; …Run Code Online (Sandbox Code Playgroud) 我正在尝试首次使用Repository模式构建一个新的应用程序,我对使用Repository有点困惑.假设我有以下类:
public class Ticket
{
}
public class User
{
public List<Ticket>AssignedTickets { get; set; }
}
public class Group
{
public List<User> GroupMembers { get;set; }
public List<Ticket> GroupAssignedTickets { get;set; }
}
Run Code Online (Sandbox Code Playgroud)
我需要一种方法,可以通过从数据库中提取数据来填充这些集合.
我很困惑,我应该把这些方法放在哪个相关的Repository类中.我应该设计我的存储库,以便返回类型T的所有内容都在T类型的存储库中进行吗?
public class TicketRepository
{
public List<Ticket> GetTicketsForGroup(Group g) { }
public List<Ticket> GetTicketsForUser(User u) { }
}
public class UserRepository
{
public List<User> GetMembersForGroup(Group g) { }
}
Run Code Online (Sandbox Code Playgroud)
我在这里看到的明显缺点是我需要开始实例化大量的存储库.如果我的用户还分配了窗口小部件,窗口小部件和小部件怎么办?当我填充用户时,我需要实例化一个WidgetRepository,一个FidgetRepository和一个LidgetRepository来填充单个用户.
或者,我是否构建了我的存储库,以便将基于类型T的所有请求集中到T类型的存储库中,如下所示?
public class GroupRepository
{
public List<Ticket> GetTickets(Group g) { }
public List<User> …Run Code Online (Sandbox Code Playgroud)