问题标签 [drawrect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1895 浏览

iphone - iphone捏缩放

我在视图的drawRect函数中绘制了几个形状,这些形状的颜色在使用调用drawRect的setNeedsDisplay重复一段时间后会发生变化,其次,当点击它时还要选择一个形状名称,到目前为止一切正常。

存在三个视图,每个视图具有多个如上绘制的形状。所有这些视图都添加到滚动视图中,以便用户可以在下一个视图中查看形状。

现在的要求是捏缩放包含形状的视图,还需要选择形状,drawRect被反复调用。我看到的所有捏缩放都与图像有关。

0 投票
2 回答
48089 浏览

iphone - 如何绘制 UIImage 或直接在 -drawRect: 中?

我有一个UIImage我想在UIView. 但是UIImageView,我不想创建一个并将其添加为子视图,而是-drawRect:直接覆盖并绘制我的 UIView。

例如,我的代码如下所示:

0 投票
5 回答
1495 浏览

iphone - iPhone自定义绘制的 UITableViewCell ,如何在线程中加载+插入来自网络的图像?

我一直在绘制自定义表格单元格(使用来自苹果的样本作为基础),现在不得不做一个显示来自 URL 的图像的单元格 - 每个单元格都会有不同的图像(基于它拥有的一些数据) 但所有单元格都是相同的,因此相同的重用 ID。

这样做的正确结构是什么?显然我需要在新线程中加载图像。到目前为止,我在自己的线程中运行的单元格视图类中有以下函数:

当我从 drawRect 函数本身(这很糟糕)调用它时,它“工作”,但显然每次发生任何事情时都会调用它(选择等)。如果我把它放在单元格 uiview 的 init 函数中,那么它只会被前 8 个单元格调用,然后它们会被重用。其他变体最终使图像在重复使用单元格时不会“重置”,因此相同的 8 张图像在表格中重复出现(尽管其他文本更新)。

我暂时不担心缓存,但是有没有关于如何做到这一点的示例,或者有人能指出我正确的方向吗?谢谢。

0 投票
1 回答
973 浏览

objective-c - 在 Scroll 上重绘 NSCollectionView 会导致图形中断

当我滚动窗口时,我有一个轻微的刺激,NSCollectionView其中NSCollectionViewItem's 在视觉上会破裂。

分解的速度取决于滚动的速度。例如,如果我慢慢滚动,分手会更频繁地发生。快速滚动较少。看来问题出在NSCollectionViewItem我正在使用的自定义 NSView 越过可视框架的边界时。

我的 NSView(自定义视图NSCollectionViewItem)有一个非常简单的绘图算法 - 没什么太复杂的。

本质上,我在 drawRect 方法的 dirtyRect 中创建了一个框架,并在其中创建了一些框架:

我已经尝试在代码之前和之后锁定焦点并释放,以及设置图形上下文并恢复它——这些似乎都不能解决问题。

我正在使用 Snow Leopard - 我认为这并不重要。

解决方案更新

对于任何对此感兴趣的人,都是 NSResponder 推荐的问题的解决方案。mOuterFrame我是根据所指出的drawRect:方法创建初始值,这是不正确的做法。dirtyRect快速变化:

到基于 0 的起始点:

我还调整了代码的效率,因为我只使用矩形,正如建议的那样,尽管上面的代码更改足以解决问题本身。我必须添加一个更改以获得两像素线。新方法:

0 投票
1 回答
5109 浏览

uiviewcontroller - 在哪里放置drawRect?

我刚开始学习iPhone的绘图程序,但有些东西让我感到困惑。如果我启动一个新的基于视图的应用程序,并建立一个新的视图类,将其与应用程序附带的视图相关联,那么放置在该新视图类中的 drawRect 似乎可以工作。

但是为什么我不能直接在视图控制器中为视图建立我的绘图例程:我已经尝试过了,当我使用 setNeedsDisplay 时,drawRect 并没有被调用。

提前感谢您的帮助。

约翰·多纳

0 投票
5 回答
2398 浏览

iphone - iPhone + UIView。drawRect 期间内存消耗巨大。有什么减少这种情况的策略吗?

我的数据可视化应用程序在重绘期间会出现大量内存消耗峰值(触发 drawRect 的 setNeedsDisplay)。我目前正在重绘包含数据图的整个视图。此视图比设备显示大得多。

有没有办法告诉 CoreGraphics 分配足够的内存来绘制每个元素(每个元素都是一个比设备显示小得多的小矩形块)并在完成后释放内存,而不是我目前的幼稚方法?

提前致谢。

-道格

更新 12 月 8 日美国东部标准时间上午 8:28

这是带有解释性文字的相关代码。我正在运行具有 ObjectAlloc、内存监视器和泄漏仪器的仪器。我唯一的内存泄漏与 NSOperationQueue 没有释放内存有关。这是次要的,不相关的。

在架构上,该应用程序由一个 tableView 组成,其中包含人类基因组中要检查的有趣位置列表。When a table row is selected I enqueue a data gathering operation that returns data called alignmentData. 然后将该数据绘制为水平矩形板。

最初,当 tableView 启动时,我的内存占用为 5 MB。

注意:viewWillAppear: 调用后内存占用没有变化。即使alignmentView 的大小远远超出显示器的尺寸。

这是从数据收集操作中调用的方法。

在这行代码之后:

内存占用为 13.8 MB

在这行代码之后:

内存占用飙升至 21.5 MB,停留几秒钟,然后返回到预先存在的 13.8 MB 水平

我正在寻找的解决方案将允许我从本质上创建一个水平渲染缓冲区窗口,该窗口是单行对齐对象的高度。我会将它的内存渲染分配给它,然后丢弃它。我会一遍又一遍地为每一行对齐数据执行此操作。

从理论上讲,我可以使用这种方法渲染无限量的数据,这当然是最出色的 ;-)。

-道格

0 投票
2 回答
386 浏览

iphone - 我如何强制“容器”UIView 没有 CALayer?

我试图在我的可视化中节省内存消耗。我有一个带有 containerView 的滚动视图,其中包含一些子视图。我想去掉scrollView和containerView的CALayer。因此,只有子视图在重绘等期间消耗内存。

我该怎么做呢?

谢谢,道格

0 投票
1 回答
535 浏览

iphone - iPhone 石英。如何使用路径而不是位图创建遮罩?

在我正在编写的可视化应用程序中,我想使用通过路径创建的遮罩来塑造图形。该图形是一个水平矩形条,其中绘制了各种形状。在这个矩形条上,我想绘制一个椭圆作为遮罩,对矩形条进行整形,使其看起来像在椭圆内绘制。我该怎么做呢?

在这个简化的示例中,我正在尝试 - 并且未能通过使用各种混合模式在其顶部绘制一个椭圆来使背景蓝色矩形显示为蓝色椭圆。

谢谢,道格

更新:解决方案简而言之:剪切路径。呸!下面的代码片段创建了我所追求的效果,它是红色背景下的蓝色椭圆。请注意,蓝色椭圆是通过将蓝色矩形约束到椭圆的形状来创建的。这就是我需要的。凉爽的。

希望这对其他人有帮助。剪切路径非常强大。干杯。

0 投票
1 回答
3520 浏览

apache-flex - 在 Flex Canvas 上绘制正方形

我正在尝试为 Flex Canvas 上的正方形动画图像编写一些代码。下面的代码有问题,因为它变得越来越慢。我想我应该清理旧广场什么的。

我在下面做错了什么?:

0 投票
1 回答
560 浏览

iphone - drawRect 或重用单元方法中的静态图像?

我正在测试在重复使用的单元格中添加静态图像与使用 drawrect 方法在单元格中绘制它。我测试了这两种方法,似乎每次显示单元格时绘制图像比将图像添加到重复使用的单元格要快。

任何人都知道,这怎么可能?我还有两个静态图像,我应该在drawrect中绘制它们还是将它们添加到重复使用的单元格中?

谢谢!