- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有没有办法像 SKSpriteNode 那样在一个区域内重复图像? SKColor colorWithPatternImage
不幸的是不起作用。
编辑:
我做了以下类别,到目前为止似乎有效。使用 Mac,未在 iOS 上测试。可能需要对 iOS 进行一些修复。
// Add to SKSpriteNode category or something.
+(SKSpriteNode*)patternWithImage:(NSImage*)image size:(const CGSize)SIZE;
// Add to SKTexture category or something.
+(SKTexture*)patternWithSize:(const CGSize)SIZE image:(NSImage*)image;
+(SKSpriteNode*)patternWithImage:(NSImage*)imagePattern size:(const CGSize)SIZE {
SKTexture* texturePattern = [SKTexture patternWithSize:SIZE image:imagePattern];
SKSpriteNode* sprite = [SKSpriteNode spriteNodeWithTexture:texturePattern];
return sprite;
}
+(SKTexture*)patternWithSize:(const CGSize)SIZE image:(NSImage*)image {
// Hopefully this function would be platform independent one day.
SKColor* colorPattern = [SKColor colorWithPatternImage:image];
// Correct way to find scale?
DLog(@"backingScaleFactor: %f", [[NSScreen mainScreen] backingScaleFactor]);
const CGFloat SCALE = [[NSScreen mainScreen] backingScaleFactor];
const size_t WIDTH_PIXELS = SIZE.width * SCALE;
const size_t HEIGHT_PIXELS = SIZE.height * SCALE;
CGContextRef cgcontextref = MyCreateBitmapContext(WIDTH_PIXELS, HEIGHT_PIXELS);
NSAssert(cgcontextref != NULL, @"Failed creating context!");
// CGBitmapContextCreate(
// NULL, // let the OS handle the memory
// WIDTH_PIXELS,
// HEIGHT_PIXELS,
CALayer* layer = CALayer.layer;
layer.frame = CGRectMake(0, 0, SIZE.width, SIZE.height);
layer.backgroundColor = colorPattern.CGColor;
[layer renderInContext:cgcontextref];
CGImageRef imageref = CGBitmapContextCreateImage(cgcontextref);
SKTexture* texture1 = [SKTexture textureWithCGImage:imageref];
DLog(@"size of pattern texture: %@", NSStringFromSize(texture1.size));
CGImageRelease(imageref);
CGContextRelease(cgcontextref);
return texture1;
}
CGContextRef MyCreateBitmapContext(const size_t pixelsWide, const size_t pixelsHigh) {
CGContextRef context = NULL;
CGColorSpaceRef colorSpace;
void * bitmapData;
//int bitmapByteCount;
size_t bitmapBytesPerRow;
bitmapBytesPerRow = (pixelsWide * 4);// 1
//bitmapByteCount = (bitmapBytesPerRow * pixelsHigh);
colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);// 2
bitmapData = NULL;
#define kBitmapInfo kCGImageAlphaPremultipliedLast
//#define kBitmapInfo kCGImageAlphaPremultipliedFirst
//#define kBitmapInfo kCGImageAlphaNoneSkipFirst
// According to http://stackoverflow.com/a/18921840/129202 it should be safe to just cast
CGBitmapInfo bitmapinfo = (CGBitmapInfo)kBitmapInfo; //kCGImageAlphaNoneSkipFirst; //0; //kCGBitmapAlphaInfoMask; //kCGImageAlphaNone; //kCGImageAlphaNoneSkipFirst;
context = CGBitmapContextCreate (bitmapData,// 4
pixelsWide,
pixelsHigh,
8, // bits per component
bitmapBytesPerRow,
colorSpace,
bitmapinfo
);
if (context== NULL)
{
free (bitmapData);// 5
fprintf (stderr, "Context not created!");
return NULL;
}
CGColorSpaceRelease( colorSpace );// 6
return context;// 7
}
最佳答案
iOS工作代码:
CGRect textureSize = CGRectMake(0, 0, 488, 650);
CGImageRef backgroundCGImage = [UIImage imageNamed:@"background.png"].CGImage;
UIGraphicsBeginImageContext(self.level.worldSize); // use WithOptions to set scale for retina display
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextDrawTiledImage(context, textureSize, backgroundCGImage);
UIImage *tiledBackground = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
SKTexture *backgroundTexture = [SKTexture textureWithCGImage:tiledBackground.CGImage];
SKSpriteNode *backgroundNode = [SKSpriteNode spriteNodeWithTexture:backgroundTexture];
[self addChild:backgroundNode];
关于sprite-kit - Sprite 套件和 colorWithPatternImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19490970/
我有一个图案图像(底部有阴影的红色纹理)。当我使用这段代码时 view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageN
我对 colorWithPatternImage 有一些问题。 图像在视网膜屏幕上展开,我环顾四周,找不到适合我的解决方案。 这是我所拥有的: tblView.backgroundColor = [U
我用我的图案制作的背景有点问题。我想用图案 (75x75) 制作背景,如果我使用该方法 self.myView.backgroundColor=[[UIColor alloc] initWithPat
我试图为 tableviewcell 的不同 backgroundColor 提供 colorwithPatternImage ,但它没有按预期工作。该文档没有提到一次只能使用一种模式。 假设我有 3
我正在尝试创建一个带有自定义文本的 UILabel 来显示游戏的当前分数。客户给了我一些屏幕截图,他们希望文本的颜色/图案看起来像木板的颜色/图案,因此它看起来呈褐色,内部有较深的漩涡。 这可能吗?我
我准备了一张透明的图片,像这样: 对于两个 UIview,我这样配置背景颜色: self.view.backgroundColor = [UIColor groupTableViewBackgroun
您好,我想同时实现圆角和由平铺一个小 png 组成的背景(OPERATOR_VIEW_BACKGROUND_IMAGE)。我的主要目标是允许设计人员通过在项目资源中插入正确的图像来填充 View 的背
如果可以,图像可以动画吗? 有充分的理由不这样做吗?内存使用情况等? 最佳答案 是的,标签可以有图案颜色。 alt text http://img178.imageshack.us/img178/19
我们有没有办法像 SKSpriteNode 那样在一个区域内重复图像? SKColor colorWithPatternImage不幸的是不起作用。 编辑: 我做了以下类别,到目前为止似乎有效。使用
我想比较使用 [UIColor colorWithPatternImage:] 生成的两个 UIColor 是否相等。我似乎不知道该怎么做。 [[UIColor colorWithPatternIma
我正在使用 colorWithPatternImage 更改 UITextView 的文本颜色。它在 IO7 中工作正常但在 IO6 中不工作。 这是我的代码:- text.textColor = [
我有 UIView,backgroundColor 设置为 colorWithPatternImage。正如预期的那样,背景图像是从上左角开始绘制的。 当我在该 View 上执行 renderInCo
我正在使用 [UIColor colorWithPatternImage:] 为我的分组 UITableViewCell 设置背景图像。我的单元格有免费的圆角,一切看起来都很棒,直到我尝试给单元格一个
如果我只是想为 UIView 使用背景图片,哪个更好?我可以使用任何一种方法来完成此操作,但哪种方法效率更高?我的直觉是,使用 UIView 和 colorWithPaternImage 比使用 UI
在空白的 UIViewController 中,我通过以下方式更改屏幕颜色: self.view.backgroundColor = [UIColor colorWithPatternImage:[U
我的问题是,是否可以让 UIView 显示图像,如果可以,我该怎么做?我所能找到的只是不再适用于 swift 的 colorwithpatternImage。 我现在尝试使用的代码是: self.vi
有没有办法获取在 UIColor 类别中设置背景颜色的对象的边界? 例如,我尝试从图像应用 UIColor,但我希望它相应地拉伸(stretch)。关联的引用文献会完成这项工作吗?或者最好在 UIVi
我正在使用 UIColor 的 colorWithPatternImage 函数在我的一个 View 上设置平铺图像。结果是一个由 1 像素线组成的网格。 图:线条清晰的颜色网格是问题所在。 我的目的
我有一个 UIImageView,它使用以下代码进行动画处理: NSMutableArray *imageArray = [[NSMutableArray alloc] init];
我有一个传递给我的 UIColor。我需要检测它是纯色(例如,使用 colorWithRed:green:blue:alpha: 创建)还是使用 colorWithPatternImage 创建的颜色
我是一名优秀的程序员,十分优秀!