android canvas画图 scale函数能扩大画布canvas大小吗

◇本站云标签您现在正在浏览:
开发语言android canvas绘图 切割画布(clipRect)
发布时间:
浏览次数:
摘要: 最后一个参数有多个选择分别是://DIFFERENCE是第一次不同于第二次的部分显示出来。//REPLACE是显示第二...
android canvas画图 切割画布(clipRect)--中国移动开发者社区
canvas.clipRect(30, 30, 70, 70, Region.Op.XOR);最后一个参数有多个选择分别是://DIFFERENCE是第一次不同于第二次的部分显示出来
//REPLACE是显示第二次的
//REVERSE_DIFFERENCE 是第二次不同于第一
复制到剪贴板
Java代码
import android.content.C
import android.graphics.C
import android.graphics.C
import android.graphics.P
import android.graphics.P
import android.graphics.R
import android.util.AttributeS
import android.view.V
public class sBook extends View{
Context mC
public sBook(Context context) {
super(context);
public sBook(Context context, AttributeSet attrs) {
super(context, attrs);
public sBook(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
private void init(){
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setStrokeWidth(6);
mPaint.setTextSize(16);
mPaint.setTextAlign(Paint.Align.RIGHT);
mPath = new Path();
protected void onDraw(Canvas canvas){
canvas.drawColor(Color.GRAY);
canvas.save();
canvas.translate(10, 10);
drawScene(canvas);
canvas.restore();
canvas.save();
canvas.translate(160, 10);
canvas.clipRect(10, 10, 90, 90);
canvas.clipRect(30, 30, 70, 70, Region.Op.XOR);
drawScene(canvas);
canvas.restore();
canvas.save();
canvas.translate(10, 160);
mPath.reset();
canvas.clipPath(mPath); // makes the clip empty
mPath.addCircle(50, 50, 50, Path.Direction.CCW);
mPath.cubicTo(0, 0, 100, 0, 100, 100);
mPath.cubicTo(100, 100, 0, 100, 0, 0);
canvas.clipPath(mPath, Region.Op.REPLACE);
drawScene(canvas);
canvas.restore();
canvas.save();
canvas.translate(160, 160);
canvas.clipRect(0, 0, 60, 60);
canvas.clipRect(40, 40, 100, 100, Region.Op.UNION);
drawScene(canvas);
canvas.restore();
canvas.save();
canvas.translate(10, 310);
canvas.clipRect(0, 0, 60, 60);
canvas.clipRect(40, 40, 100, 100, Region.Op.XOR);
drawScene(canvas);
canvas.restore();
canvas.save();
canvas.translate(160, 310);
canvas.clipRect(0, 0, 60, 60);
canvas.clipRect(40, 40, 100, 100, Region.Op.REVERSE_DIFFERENCE);
drawScene(canvas);
canvas.restore();
private void drawScene(Canvas canvas) {
canvas.clipRect(0, 0, 100, 100);
canvas.drawColor(Color.WHITE);
mPaint.setColor(Color.RED);
canvas.drawLine(0, 0, 100, 100, mPaint);
mPaint.setColor(Color.GREEN);
canvas.drawCircle(30, 70, 30, mPaint);
mPaint.setColor(Color.BLUE);
canvas.drawText("Clipping", 100, 30, mPaint);
上一篇:没有了
本周技术实现排行该栏目下:
android canvas 画布
来源:网络整理 | 编辑:年轻网
android canvas 画布,有需要的朋友可以参考下。
画布对于游戏界面的绘制以及自定义界面有着非常大的作用,可以实现书写文字,添加图片等操作,首先在xml布局文件中书写一个布局文件然后引入该view布局然后在view类中进行绘制即可。
1.书写xml文件
&com.example.study2d.GameView
android:layout_width=&200dp&
android:layout_height=&200dp&/&
2。定义视图类
public class GameView extends View {
private P//声明一个画笔,通过该画笔实现文字,矢量图的绘制等
public GameView(Context context, AttributeSet attrs) {
super(context, attrs);
paint = new Paint(Paint.ANTI_ALIAS_FLAG); //对画笔进行初始设置
// TODO Auto-generated constructor stub
protected void onDraw(Canvas canvas) {
paint.setColor(Color.YELLOW); //设置画笔颜色
canvas.drawRect(0, 0, getWidth(), getHeight(), paint); //用上述声明的画笔进行绘制矩形
paint.setColor(Color.BLUE);
paint.setTextSize(20);
String text = &Hello View&;
canvas.drawText(text, 0, getHeight() / 2, paint);//通过上面的画笔来进写字
3.位图的绘制
首先我们需要先获取位图资源
bitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.icon0)).getBitmap()通过该函数我们可以获得位图资源,对于位图资源的加载,加载图片一般要放在程序的最开始,以此来防止这种加载迟缓导致程序启动慢的问题。
获得图片之后我们就可以开始对其进行绘制了
canvas.drawBitmap(bitmap, 100, 100,null);,第一个参数是我们所获得的图片的名字,然后是图片的位置坐标,最后一个参数是画笔的名字,对于画笔来说,我们在绘制位图的时候一般是不需要画笔来进行绘制的。
canvas.scale(0.5f,0.5f,bitmap1.getWidth()/2,bitmap1.getHeight()/2);通过该函数我们可以实现对于获得的位图的大小的绘制,后两个参数就是获得位图的大小的绘制。
对于视图,我们可以通过方法invalidate来实现,通过在画布中设置上一下参数来实现根据相应的要求实现实时的更新。
更多关于“”的文章
[转]让你的Android开发Eclipse环( 01:01)
有需求,就总有人去填补,这个世( 01:00)
年轻网资讯
简介:年轻,80后,90后,年轻人的地盘!年轻网,让您更健康、更美丽!
android canvas 画布
[转]让你的Android开发Ecl
有需求,就总有人去填补,
  设置两个按钮事件:/**写入偏好设置**/publ...
【】&android canvas 画布
本周精彩图文android canvas一定要设置具体的画布吗?canvas是_android开发吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:38,367贴子:
android canvas一定要设置具体的画布吗?canvas是收藏
android canvas一定要设置具体的画布吗?canvas是画在屏幕上还是画在bitmap上?求详解
我不明白canvas()和canvas(bitmap)的区别,还有这个bitmap是否是必要的?canvas可以直接画吗?是画在屏幕上还是画在bitmap上?缓冲是怎么回事?canvas和bitmap的关系又是怎么回事?新手菜鸟求详解
canvas 不一定要设置具体画布,因为系统有canvas,new Canvas()就是创建一个新的空白画布,而new Canvas(Bitmap)则是,创建一个新画布,然后把这张bitmap填充到这张画布上!canvas是必须的,不然就没画面了!bitmap其实一张图片存的像素数组。通俗点,Canvas就是一张白纸,bitmap就是颜料,两个缺一不可,缓冲无非就是多一张画布,盖在上面!    ------请不要随便玩网易的游戏,呵呵,不然你怎么死的都不知道,要问为啥?因为他们的特色就是没事关服玩
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
为兴趣而生,贴吧更懂你。或温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
阅读(984)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'一个canvas例子,包含旋转,缩放,渐变,移动的特效(不支持ie)',
blogAbstract:'
&!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"&
&html lang=\"en\"&
&title&JavaScript Platformer 2&/title&
&script type=\"text/javascript\" src=\"'
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 android canvas回收 的文章

 

随机推荐