如何将Canvas 上的内容转换为一张Bitmap
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将Canvas 上的内容转换为一张Bitmap相关的知识,希望对你有一定的参考价值。
比如我在Canvas 画了线段和一个区域,我想将它转换为一个Bitmap,如何去做?
参考技术A 上面的API就是设置你要画图时保存图的BITMAP,你画的东西就在BITMAP中。这个bitmap可以通过Bitmap.createBitmap(width, height, config)来新建,而不是你从资源里加载的。先setDrawingCacheEnabled(true);
你要显示的都显示出来后buildDrawingCache();
最后Bitmap b=getDrawingCache();
就ok了,这样就截屏了 参考技术B 上面的API就是设置你要画图时保存图的BITMAP,你画的东西就在BITMAP中。这个bitmap可以通过Bitmap.createBitmap(width, height, config)来新建,而不是你从资源里加载的。 参考技术C Bitmap bitmap;bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.name01);Paint mPaint = new Paint();mPaint.setColor(Color.BLACK);Canvas canvas;canvas.drawBitmap(bitmap,x,y,mPaint);大致是这个过程,你试试吧 参考技术D 谢谢大家了,可是我试过这种方法,Canvas canvas=new Canvas(bitmap)这种是要new 一个Bitmap 出来的,可是我现在不知道我的Bitmap 是什么,再说他的大小我也不需要屏幕那么大 的!如果传空图片的话,他会抛异常的! 第5个回答 2013-08-15 我的意思是,在我往Canvas上画的时候我根本不知道我这个Bitmap 是什么,我只是将Canvas 上的内容转换为一张图片而已!
如何将ICarousel设置为一张一张图片滑动一次
【中文标题】如何将ICarousel设置为一张一张图片滑动一次【英文标题】:How to set ICarousel to slide one time for one one image 【发布时间】:2012-05-17 15:23:11 【问题描述】:我正在使用 ICarousel 制作我的电子相册。当您滑动相册时,ICarousel 的默认设置是它会移动一段距离。我需要的是只为一张图片滑动一次。我发现 ICarousel 不是基于 ScrollView 的,所以我不知道如何实现我的目的,有人知道吗?
【问题讨论】:
【参考方案1】:使用最新版本的 iCarousel 更新答案:
iCarousel 现在通过设置支持单页滑动 pagingEnabled=YES。
【讨论】:
【参考方案2】:我建议关闭本机滚动并附加一个使用 scrollByNumberofItems 方法的 PanGestureRecognizer。
[iCarousel setScrollEnabled:NO];
然后在你的gestureRecognizer里面:
[iCarousel scrollByNumberOfItems:1 duration:0.25];
我自己试过了,效果很好。
【讨论】:
这段代码你在哪里写的? [iCarousel scrollByNumberOfItems:1 持续时间:0.25]; 您曾确定希望轮播在哪里滚动。对我来说,我把它放在 PanGestureRecognizer 里面。当手势被识别后,我用上面这行代码触发了轮播滚动。【参考方案3】:看来您必须使用由同一作者实现的另一个名为 SwipeView 的库。
问题是在这里找到的。 https://github.com/nicklockwood/iCarousel/issues/247
【讨论】:
【参考方案4】:我通过设置实现了 iCarouselTypeCoverFlow 类型:
//In ViewController.m
self.carousel.pagingEnabled = YES;
//In iCarousel.m change for smooth animation
-(void)scrollByOffset:(CGFloat)offset duration:(NSTimeInterbal)duration
if (duration > 0.0)
_decelerating = NO;
_scrolling = YES;
_startTime = CACurrentMediaTime();
_startOffset = _scrollOffset;
// _scrollDuration = duration;
// set constant duration instead
_scrollDuration = 1.0;
_endOffset = _startOffset + offset;
if (!_wrapEnabled)
_endOffset = [self clampedOffset:_endOffset];
[_delegate carouselWillBeginScrollingAnimation:self];
[self startAnimation];
else
self.scrollOffset += offset;
【讨论】:
【参考方案5】:修改 iCarousel 源代码 iCarousel.m 文件可以做到这一点!
- (void)didPan:(UIPanGestureRecognizer *)panGesture
......
case UIGestureRecognizerStateChanged:
CGFloat translation = _vertical? [panGesture translationInView:self].y: [panGesture translationInView:self].x;
translation = translation * 0.35; // Add This line to change the really translation.
......
那解决了我的问题,希望能帮到你!
【讨论】:
以上是关于如何将Canvas 上的内容转换为一张Bitmap的主要内容,如果未能解决你的问题,请参考以下文章
android的canvas如何转换为一张bitmap(位图)
将BitmapImage转换为System.Windows.Media.Brush