Tag: graphics

在Delphi中做非闪烁,分段graphics更新的最佳方法?

我想我可以把它扔在那里,只是问:我已经看到了delphi的控制,在graphics效果方面是完美无缺的。 含义:不闪烁,分段更新(只重绘标记为脏的控件部分)和平滑滚动。 我已经编写了很多年的graphics控件,所以我知道双缓冲,dibs,bitblts和所有的“常见”的东西(我总是使用dibs如果可能绘制一切,但有一个开销)。 也知道InvalidateRect和检查TCanvas.ClipRect为需要更新的实际矩形。 尽pipe所有这些典型的解决scheme,我发现很难创build相同的质量组件,如说 – Developer Express或Razed组件。 如果graphics平滑,则可以下注滚动条(本地)闪烁,如果滚动条和框架平滑,则可以在滚动期间发誓背景闪烁。 有没有一个标准的代码设置来处理这个? 一种确保整个控制顺利重新绘制的最佳实践 – 包括控制的非客户区域? 例如,这里是一个“裸骨”控制,它为分段更新提供高度(只重绘需要的)。 如果您在窗体上创build它,请尝试将窗口移动到窗体上,并用颜色replace部件(请参阅绘画方法)。 有没有人有类似的基类,可以处理非客户区重绘没有闪烁? type TMyControl = Class(TCustomControl) private (* TWinControl: Erase background prior to client-area paint *) procedure WMEraseBkgnd(var Message: TWmEraseBkgnd);message WM_ERASEBKGND; Protected (* TCustomControl: Overrides client-area paint mechanism *) Procedure Paint;Override; (* TWinControl: Adjust Win32 parameters for CreateWindow *) procedure CreateParams(var […]

从枚举types'枚举CGImageAlphaInfo'隐式转换为不同的枚举types'CGBitmapinfo'(又名)'枚举CGBitmapInfo')

我正在将一个旧的iOS 5项目转换为xCode5上的iOS6.0,并且大部分警告和错误已经修复,但是对于这个。 有关如何重写代码以避免编译器警告的任何build议。 #define kBitsPerComponent 8 #define kBitmapInfo kCGImageAlphaPremultipliedLast – (UIImage*)scaleToSize:(CGSize)size :(UIImage *)image { CGBitmapInfo bitmapInfo = kBitmapInfo; size_t bytesPerRow = size.width * 4.0; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(NULL, size.width, size.height, kBitsPerComponent, bytesPerRow, colorSpace, bitmapInfo); CGRect rect = CGRectMake(0.0f, 0.0f, size.width, size.height); CGContextDrawImage(context, rect, image.CGImage); CGImageRef scaledImageRef = CGBitmapContextCreateImage(context); UIImage* scaledImage = […]

基于图的数据库和面向对象的数据库有什么区别?

基于graphics的数据库( http://neo4j.org/ )和面向对象的数据库( http://www.db4o.com/ )有什么区别?

存储Graphics对象是一个好主意吗?

我目前正在用java写一个绘图程序,这个程序的devise具有灵活和全面的function。 这源自我最后的项目,我前一天写了一整晚。 正因为如此,它有吨和大量的错误,我一直在逐一处理(例如,我只能保存文件将是空的,我的矩形不正确,但我的圈子呢…)。 这一次,我一直在试图为我的程序添加撤销/重做function。 但是,我不能“撤销”我所做的一切。 因此,每次发生mouseReleased事件时,我都有一个想法来保存我的BufferedImage副本。 但是,有些图像的分辨率达到了1920×1080,我认为这样做效率不高:存储这些图像可能需要千兆字节的内存。 为什么我不能简单地用背景颜色绘制同样的东西来撤消是因为我有许多不同的画笔,基于Math.random()绘制,因为有许多不同的图层(在单个图层中) 。 然后,我考虑克隆用于绘制到BufferedImage的Graphics对象。 喜欢这个: ArrayList<Graphics> revisions = new ArrayList<Graphics>(); @Override public void mouseReleased(MouseEvent event) { Graphics g = image.createGraphics(); revisions.add(g); } 我之前没有这样做,所以我有几个问题: 难道我仍然在浪费毫无意义的记忆吗?就像克隆我的BufferedImages ? 是否有一种不同的方式可以做到这一点?

Javascript绘图库?

任何JavaScript交互式绘图库的build议? 只需要画线,多边形,不同颜色的文字。 IE / Firefox / Opera / Safari兼容。

我可以在canvas上使用抗锯齿画吗?

我可以在canvas上使用抗锯齿画吗? 我需要我的圈子和线条有光滑的边缘。

使用MySQL和Neo4j是一个好主意吗?

我会用很多类似的项目(数百万)做一个应用程序,并且我想将它们存储在一个MySQL数据库中,因为我想要做大量的统计数据并search特定列的特定值。 但是同时,我将把所有项目之间的关系存储起来,这些项目在许多连接的二叉树状结构(传递闭包)中是相关的,而关系数据库不擅长这种结构,所以我想存储Neo4j中对这种数据有良好performance的所有关系。 我的计划是除了MySQL数据库中的关系之外的所有数据以及存储在Neo4j数据库中的与item_id所有关系。 当我想查找一棵树时,我首先在Neo4j中search树中的所有item_id :s,然后在查询中searchMySQL数据库中的所有指定项目,如下所示: SELECT * FROM items WHERE item_id = 45 OR item_id = 345435 OR item_id = 343 OR item_id = 78 OR item_id = 4522 OR item_id = 676 OR item_id = 443 OR item_id = 4255 OR item_id = 4345 这是一个好主意,还是我错了? 我以前没有使用过graphics数据库。 有没有更好的方法来解决我的问题? 在这种情况下MySQL查询将如何执行?

表面和纹理之间的区别(SDL /一般)

任何人都可以用简单的语言向我解释纹理和表面有什么区别? 我看到它在SDL2用作SDL_Surface和SDL_Texture 。 SDL_Texture是从SDL_Surface创build的, SDL_Surface又是从图像/位图创build的。 两者都是像素的集合。 但我没有看到他们之间的主要区别(必须做一些与GPU?) 我试图谷歌它,但我发现的所有解释太复杂,不理解他们,而不深入到电脑graphics的东西。

设置CGContext透明背景

我仍然在用CGContext绘制一条线。 我其实已经去画线,但是现在我需要Rect的背景是透明的,所以现有的背景显示通过。 这是我的testing代码: (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor); CGContextSetAlpha(context,0.0); CGContextFillRect(context, rect); CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor); CGContextSetLineWidth(context, 5.0); CGContextMoveToPoint(context, 100.0,0.0); CGContextAddLineToPoint(context,100.0, 100.0); CGContextStrokePath(context); } 有任何想法吗?

D3.js强制有向图,通过使边相互排斥来减less边交叉

所以我已经有一个页面绘制一个有力的图,就像这里展示的那样 。 这工作正常。 我从这里使用JS,只需稍作调整即可将节点稍微分散一些。 这些或多或less是唯一的区别: d3.json("force.json", function(json) { var force = d3.layout.force() .gravity(0.1) .charge(-2000) .linkDistance(1) .linkStrength(0.1) .nodes(json.nodes) .links(json.links) .size([w, h]) .start(); 在减less链接强度的地方似乎使得链接更像是弹簧,所以它变得类似于经常使用的Fruchterman&Reingold技术。 这工作相当好,但只适用于相当小的图表。 随着更大的图表,交叉口的数量正在上升 – 正如人们所期望的那样,但是它所处的解决scheme通常远不是最佳的。 我不想找一个方法来获得最佳的解决scheme,我知道这是非常困难的。 我只是希望它有一些粗加法,试图强制拆分线以及节点。 有没有办法在链接之间以及节点之间添加斥力? 我不熟悉D3强制的方式,我似乎无法find任何说这是可能的…