例如,我有一个带Alpha透明度的PNG图像.
如何在没有透明色的情况下将按钮的形状设置为此图像.
我不久前需要这样做,而我所做的就是Sixten otto刚刚提出的建议.我的原始问题(“更新”部分)中有一些提示,用于在某个点获取图像的Alpha值:
How to create a transparent window with non-rectangular buttons?
编辑:我建议在下面的例子中继承UIControl,但是如果除了它的“非矩形”之外你的按钮上不需要任何特殊的行为,那么只需用你的PNG创建无边框UIbutton就能完成这项工作并要求减少工作量.通过对UIControl进行子类化并以“艰难的方式”进行 *** 作,您可以更好地控制控件的行为.
我建议你继承UIControl并覆盖触摸事件方法,然后在tapped点下检查Alpha并且如果Alpha == 0则不处理事件.对于绘制你覆盖drawRect:并使用NSImage的drawInRect:fromrec:operation:fraction :在那里绘制控件框架中的图像的方法.
首先,您需要加载图像并获取它的位图表示:
buttonImage = [NSImage imagenamed:@"mybuttonImage"];buttonImageRep = [[buttonImage representations] objectAtIndex:0];
然后你可以将它绘制到控件的视图中:(其中stateImage是指向必须绘制的图像的指针,具体取决于是否按下按钮)
- (voID)drawRect:(NSRect)aRect { [stateImage drawInRect:[self bounds] fromrect:NSMakeRect(0.0,0.0,[buttonImage size].wIDth,[buttonImage size].height) operation:NSCompositeSourceOver fraction:1.0];}
此时,您已使用png图像绘制了按钮.如果Alpha不为0,您可以覆盖触摸事件方法并处理事件:
NScolor *colorUnderMouse = [buttonImageRep colorAtX:mouse.x y:mouse.y];float Alpha = [colorUnderMouse AlphaComponent];
这就是我所做的,它运作得非常好.希望这可以帮助!
N.B:我的例子是针对Mac的,但它也适用于iPhone,可能稍作修改.
总结以上是内存溢出为你收集整理的iPhone按钮非矩形形状?全部内容,希望文章能够帮你解决iPhone按钮非矩形形状?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)