首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Axesdrawer斯坦福cs193p像素和点

Axesdrawer斯坦福cs193p像素和点
EN

Stack Overflow用户
提问于 2012-04-02 23:02:48
回答 2查看 684关注 0票数 0

我正在学习斯坦福大学的CS 193p课程(在iTunesU中),我试图理解他们为作业3提供的AxesDrawer类,特别是drawHashMarksInRect方法中的这些行

代码语言:javascript
复制
#define HASH_MARK_SIZE 3
#define MIN_PIXELS_PER_HASHMARK 25
+ (void)drawHashMarksInRect:(CGRect)bounds originAtPoint:(CGPoint)axisOrigin scale: (CGFloat)pointsPerUnit
{
.....
int unitsPerHashmark = MIN_PIXELS_PER_HASHMARK * 2 / pointsPerUnit;
if (!unitsPerHashmark) unitsPerHashmark = 1;
CGFloat pixelsPerHashmark = pointsPerUnit * unitsPerHashmark;
....
}

他们说使用像素而不使用contentScaleFactor属性是怎么回事?他们实际上是在使用像素还是仅仅是点,只是误用了这个术语?这就是AxesDrawer code

EN

回答 2

Stack Overflow用户

发布于 2012-04-20 19:29:20

这个类正确地将一个点视为一个点-这意味着您的bounds.size.width和bounds.size.height的尺寸与iPhone 3GS屏幕的像素大小相同……

如果您正在编译到附加的3Gs,则内容比例因子为1。

如果您连接到iPhone 4或4s,则内容比例因子为2。

但是,AxesDrawer将scale视为pointsPerUnit,在iPhone 4上为0.5,因此传递给它的scale为0.5

您可以通过将以下内容放入图表视图的UIView类中来实现此功能;

代码语言:javascript
复制
CGFloat screenScale = self.contentScaleFactor;
CGFloat scaleForAxesDrawer = 1 / screenScale;
[[self.axes class] drawAxesInRect:graphArea originAtPoint:axisPoint scale:scaleForAxesDrawer];
// where graphArea is a CGRect and axisPoint is a CGPoint

例如。

AxesDrawer将沿轴放置一个散列标记和数字,不少于每25个像素。

票数 0
EN

Stack Overflow用户

发布于 2015-02-25 15:07:42

但contentScaleFactor是每个点的像素数。因此,在高分辨率的情况下,它将有更多的像素每个点。但是,既然我们是在点数范围内处理问题,那么系统不应该在不涉及我们的情况下自行处理吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9978792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档