android sqlite 使用etAntiAlias()是做什么用的

Android SDk Manager 是做什么用的?
按投票排序
是用来安装Android SDK的,在里面选择要安装的Android版本
用来帮你自动下载你选择的android SDK
andriod sdk platform-tools not installed有没有关系?安卓(Android)一种专为手持式装置所设计的操作系统。Android 是一种开放原始码..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Android是做什么用的
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口查看: 818|回复: 8
canvas.drawBitmap出来的效果差是怎么回事?
主题帖子e币
我想给图片加上字.用canvas来画,先创建一个空白的画布,再把图画上去,然后再写字,最后保存,但发现写完出来的效果比原图差很多,多了些噪点还是方格的东西,请问有人知道是怎么回事吗?有图有真相,大家可以点开图就看得出差别了,在手机上尤其明显.谢谢各位
以下是代码:
[mw_shl_code=java,true]Bitmap keyPic = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_4444);//建立一个空的bitmap
Canvas canvas = new Canvas(keyPic);
Paint photoPaint = new Paint(Paint.ANTI_ALIAS_FLAG); //建立画笔&&
photoPaint.setDither(true); //获取跟清晰的图像采样&&
photoPaint.setAntiAlias(true);//抗锯齿
photoPaint.setFilterBitmap(true);//过滤一些
Rect src = new Rect(0, 0, options.outWidth, options.outHeight);//创建一个指定的新矩形的坐标&&
Rect dst = new Rect(0, 0, width, height);//创建一个指定的新矩形的坐标
canvas.drawBitmap(oriPic, src, dst, photoPaint);//将photo 缩放或则扩大到 dst使用的填充区photoPaint
canvas.drawText(text, startX, startY, textPaint);//绘制上去字
canvas.save(Canvas.ALL_SAVE_FLAG);
canvas.restore();[/mw_shl_code]
附件: 您需要
才可以下载或查看,没有帐号?
你用ARGB_4444来量化图片,本来对图片损耗就很大了,我看你的图都没有透明度,用RGB_565就行了,要效果最好当然还是用ARGB_8888。
主题帖子e币
你用ARGB_4444来量化图片,本来对图片损耗就很大了,我看你的图都没有透明度,用RGB_565就行了,要效果最好当然还是用ARGB_8888。
不知道是不是图片的分辨率太小的问题.以前我试过用长1000左右的图来画,是没任何问题的.现在把分辨率做了限制,全部压成小的,就有问题了.我现在把分辨率调高点,把500多调到800左右,用ARGB_8888,出来的效果好一点了.&
试过用RGB_565了,也是一样.&
RGB_565和ARGB_4444不是都一样吗?我看他们的介绍是ARGB_8888是耗4个byte来储存的,4444是和565都是2个byte的,效果是没有ARGB_8888那么好,但我试过用ARGB_8888效果也一样是这样的.&
主题帖子e币
保存的话都是用以下代码来保存成文件的.最初的时候用大图片来写都没问题的,现在变成了小图片(500多X300多)就很明显了
[mw_shl_code=java,true]fos = new FileOutputStream(path);
pressFormat.JPEG, 100, fos);[/mw_shl_code]
主题帖子e币
看起来像是缩放的算法不好导致的失真
没有经过缩放的.&
主题帖子e币
看起来像是缩放的算法不好导致的失真
没有经过缩放的.
主题帖子e币
你用ARGB_4444来量化图片,本来对图片损耗就很大了,我看你的图都没有透明度,用RGB_565就行了,要效果最好 ...
RGB_565和ARGB_4444不是都一样吗?我看他们的介绍是ARGB_8888是耗4个byte来储存的,4444是和565都是2个byte的,效果是没有ARGB_8888那么好,但我试过用ARGB_8888效果也一样是这样的.
主题帖子e币
你用ARGB_4444来量化图片,本来对图片损耗就很大了,我看你的图都没有透明度,用RGB_565就行了,要效果最好 ...
试过用RGB_565了,也是一样.
主题帖子e币
创建bitmap 用ARGB_8888& &上面的RGB_565是8位的RGB忽略透明度
主题帖子e币
你用ARGB_4444来量化图片,本来对图片损耗就很大了,我看你的图都没有透明度,用RGB_565就行了,要效果最好 ...
不知道是不是图片的分辨率太小的问题.以前我试过用长1000左右的图来画,是没任何问题的.现在把分辨率做了限制,全部压成小的,就有问题了.我现在把分辨率调高点,把500多调到800左右,用ARGB_8888,出来的效果好一点了.
社区认证会员
社区认证会员
推荐阅读热门话题
62496248022922252184218301658148613121121860800791785715
半小时前半小时前半小时前半小时前半小时前半小时前半小时前半小时前半小时前半小时前半小时前半小时前半小时前
特别关注 /3
从基础入门到熟练精通,9个阶段知识体系图指引你逐步提升~还有技术问答+讲师互动,最新实战教程每日更新!
想学Android开发,但没有Java基础?Java体系庞大,不知道从哪学起?专门针对Android开发所需的Java基础教程,学这些,就够了!
专为零基础定制,从基础到精通,只需3个月轻松搞定!将iOS开发学到极致,月薪过万不是梦!马上开始学习吧!
Powered by
扫一扫 关注eoe官方微信1224人阅读
画了个Android
&& 今晚瞎折腾,闲着没事画了个机器人&&android,浪费了一个晚上的时间。画这丫还真不容易,为那些坐标,差点砸了键盘,好在最后画出个有模有样的,心稍安。
&& 下面来看看画这么个机器人需要些什么东西:主要是Canvas类(android.graphics.Canvas)。Canvas类就是表示一块画布,你可以在上面画你想画的东西。当然,你还可以设置画布的属性,如画布的颜色/尺寸等。Canvas提供了如下一些方法:
&& &Canvas():创建一个空的画布,可以使用setBitmap()方法来设置绘制的具体画布;
&& &Canvas(Bitmap bitmap):以bitmap对象创建一个画布,则将内容都绘制在bitmap上,bitmap不得为
&& &Canvas(GL gl):在绘制3D效果时使用,与OpenGL有关;
&& &drawColor:设置画布的背景色;
&& &setBitmap:设置具体的画布;
&& &clipRect:设置显示区域,即设置裁剪区;
&& &isOpaque:检测是否支持透明;
&& &rotate:旋转画布;
&&下面我们就用Canvas来画一个机器人&&android,oh my love!一看就知道,机器人的外形是由矩形/圆/圆弧/线条组成的,因此要知道怎么用Canvas画矩形/圆/圆弧和线条。可惜阿,上面几个方法基本都没用上。
&& &canvas.drawRect(RectF,Paint)方法用于画矩形,第一个参数为图形显示区域,第二个参数为画笔,设置好图形显示区域Rect和画笔Paint后,即可画图;
&& &canvas.drawRoundRect(RectF, float, float, Paint) 方法用于画圆角矩形,第一个参数为图形显示区域,第二个参数和第三个参数分别是水平圆角半径和垂直圆角半径。
&& &canvas.drawLine(startX, startY, stopX, stopY, paint):前四个参数的类型均为float,最后一个参数类型为Paint。表示用画笔paint从点(startX,startY)到点(stopX,stopY)画一条直线;
&& &canvas.drawArc(oval, startAngle, sweepAngle, useCenter, paint):第一个参数oval为RectF类型,即圆弧显示区域,startAngle和sweepAngle均为float类型,分别表示圆弧起始角度和圆弧度数,3点钟方向为0度,useCenter设置是否显示圆心,boolean类型,paint为画笔;
&& &canvas.drawCircle(float,float, float, Paint)方法用于画圆,前两个参数代表圆心坐标,第三个参数为圆半径,第四个参数是画笔;
&&&清楚这些函数的用法之后,我们是否就噼里啪啦地敲代码了呢?别急,我们来搞个设计。既然这些函数都是用来画图的,也就是说它们有共性&&画。所有我们应该设计一个接口interface,对于这次任务,只需要一个成员方法就足够了。对于每一个图形,是只用一个方法画,还是将画图封装成类呢?我建议是封装成类。因为说不定你明天就会嫌弃它不会动,想它动起来,或者你过两天又希望在机器人的每个部位加点什么。所以我将每一个图形封装成类,都实现一个名叫drawGraphics的接口。最后,要记得给UI创建一个线程哦。
&&&就这样我开始动手做了,但是很快就发现问题了。什么问题?在定位的时候,也就是设置每个图形的显示区域时,我自以为这里的Rect跟Java的Rectangle是一样的,但我错了。原来这厮跟MFC中的RECT结构才是一家人,害我折腾了许久。
&&&&Rect(int left,int top,int right,int bottom)
&& & & & & &&&矩形左上角X坐标值
&& & & & & & &矩形左上角Y坐标值
&& & & & & & &矩形右下角X坐标值
&&&&bottom
&& & & & & & &矩形右下角Y坐标值
&&&下面借用一张图说明(忘了哪个博客找来的(*^__^*) 嘻嘻&&),如Rect(150, 75, 260, 120) 一目了然吧。
&& &还有一点非常重要的是,屏幕最上方的状态栏和标题栏总占去来50的高度,同时坐标原点下移到标题栏下方,即如果你的手机屏幕分辨率为(320X480),编程时如果没有设置去除状态栏和标题栏,你只能操控的范围只有(320X430),而且坐标原点下移。记住咯。
//drawGraphics.java
package&&com.scgm.android.
import&android.graphics.C
public&interface&&drawGraphics {
public&void&&draw(Canvas canvas);
package&&com.scgm.android.
import&android.content.C
import&&android.graphics.C
import&android.graphics.Color;
import&android.graphics.P
import&android.view.V
public&classGameView &extends&View &implements&&Runnable{
&& & & &//声明Paint对象
&& & & private&&Paint mPaint= null;
&& & & privatedrawGraphics drawGraphics= null;
&& & & public&GameView(Context context) {
&& & & & & &super(context);
&& & & & & // TODOAuto-generated constructor stub
&& & & & & //构建对象
&& & & & & mPaint= new&Paint();
&& & & & & //开启线程
&& & & & & new&&Thread(this).start();
&& & & public&void&&onDraw(Canvas canvas) {
&& & & & & super.onDraw(canvas);
&& & & & & //设置画布为黑色背景
&& & & & & //canvas.drawColor(Color.BLACK);
&& & & & & //消除锯齿
&& & & & & mPaint.setAntiAlias(true);
&& & & & &//设置图形为空心
&& & & & & mPaint.setStyle(Paint.Style.STROKE);
&& & & & & //绘制空心几何图形
&& & & & & drawGraphics= &new&&DrawCircle();
&& & & & & drawGraphics.draw(canvas);
&& & & & & drawGraphics= &new&&DrawLine();
&& & & & & drawGraphics.draw(canvas);
&& & & & & drawGraphics= newDrawRect();
&& & & & & drawGraphics.draw(canvas);
&& & & & &@Override
&& & & & &public&void&run() {
&& & & & & & & // TODOAuto-generated method stub
&& & & & & & & while(!Thread.currentThread().isInterrupted()) {
&& & & & & & & & & &try{
&& & & & & & & & & & & & &Thread.sleep(1000);
&& & & & & & & & & &} catch(InterruptedException e) {
&& & & & & & & & & & &// TODO: handle exception
&& & & & & & & & & & &Thread.currentThread().interrupt();
&& & & & & & & & & &}
&& & & & & & & & & & //使用postInvalidate 可以直接在线程中更新界面
&& & & & & & & & & & &postInvalidate();&
&& & & & & & & }
&& & & & }
//DrawRect.java
package&com.scgm.android.
import&android.graphics.C
import&android.graphics.C
import&android.graphics.P
import&android.graphics.RectF;
public&class&DrawRect &implements&&drawGraphics{
&& & & private&&Paint paint= &null;
&& & & public&DrawRect(){
&& & & paint= new&&Paint();
&& & & & @Override
&& & & & public&void&&draw(Canvas canvas) {
&& & & & & & // TODOAuto-generated method stub
&& & & & & & //定义圆角矩形对象
&& & & & & & RectF rectF1 = newRectF(120,170,370,500);
&& & & & & & RectF rectF2 = newRectF(40,150,90,400);
&& & & & & & RectF rectF3 = newRectF(390,150,440,400);
&& & & & & & RectF rectF4 = newRectF(140,520,200,650);
&& & & & & & RectF rectF5 = newRectF(290,520,350,650);
&& & & & & & paint.setAntiAlias(true);
&& & & & & & //设置画笔颜色为BLUE
&& & & & & & paint.setColor(Color.GREEN);
&& & & & & & //在画布上绘制圆角矩形/圆弧/直线
&& & & & & & canvas.drawRoundRect(rectF1, 20, 20, paint);
&& & & & & & canvas.drawRoundRect(rectF2, 20, 20, paint);
&& & & & & & canvas.drawRoundRect(rectF3, 20, 20, paint);
&& & & & & & canvas.drawRoundRect(rectF4, 20, 20, paint);
&& & & & & & canvas.drawRoundRect(rectF5, 20, 20, paint);
//DrawLine.java
package&&com.scgm.android.
import&android.graphics.C
import&&android.graphics.C
import&android.graphics.P
public&class&DrawLine &implements&&drawGraphics{
&& & & private&Paint paint= &null;
&& & & public&&DrawLine(){
&& & & & & paint= &new&&Paint();
&& & & &@Override
&& & & &publicvoiddraw(Canvas canvas) {
&& & & & & &// TODOAuto-generated method stub
&& & & & & &paint.setAntiAlias(true);
&& & & & & &//绘制直线
&& & & & & &paint.setColor(Color.GREEN);
&& & & & & &//设置线条粗细
&& & & & & &paint.setStrokeWidth(12);
&& & & & & &canvas.drawLine(120,40,170,90, paint);
&& & & & & &canvas.drawLine(320,90,370,40, paint);
//DrawCircle.java
package&com.scgm.android.
import&android.graphics.C
import&&android.graphics.C
import&&android.graphics.P
import&android.graphics.RectF;
public&class&DrawCircle &implements&&drawGraphics{
&& & & &private&&Paint paint= &null;
&& & & &private&&Paint paint_eye= &null;
&& & & &public&&DrawCircle(){
&& & & &paint= new&&Paint();
&& & & &paint_eye= new&&Paint();
&& & & &@Override
&& & & &public&&void&draw(Canvas canvas) {
&& & & & & & // TODOAuto-generated method stub
&& & & & & & //绘制圆形(圆心x,圆心y,半径r,画笔p)
&& & & & & & paint_eye.setAntiAlias(true);
&& & & & & & paint.setAntiAlias(true);
&& & & & & & RectF rectF = newRectF(120,60,370,240);
&& & & & & & paint_eye.setColor(Color.WHITE);
&& & & & & & paint.setColor(Color.GREEN);
&& & & & & & canvas.drawCircle(190, 110, 18, paint_eye);
&& & & & & & canvas.drawCircle(300, 110, 18, paint_eye);
&& & & & & & canvas.drawArc(rectF, 180, 180,true, paint);
//GameStart.java
package&&com.scgm.android.
import&&android.app.A
import&android.os.B&
public&class&GameStart &extends&&Activity {
&& & &private&&GameView mGameView= &null;&
&& & &@Override
&& & &public&&void&&onCreate(Bundle&&savedInstanceState) {&
&& & & & &super.onCreate(savedInstanceState);
&& & & & &this.mGameView= newGameView(this);
&& & & & &setContentView(mGameView);
运行效果图:
&& & & & & & & & & & & &
&& & &还可以吧?:-)
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:268627次
积分:3835
积分:3835
排名:第3185名
原创:98篇
转载:154篇
评论:40条
(5)(13)(3)(1)(2)(1)(2)(4)(7)(4)(18)(29)(10)(6)(1)(7)(6)(3)(1)(1)(4)(1)(6)(3)(1)(1)(7)(2)(10)(1)(1)(2)(3)(7)(1)(1)(3)(5)(1)(2)(2)(1)(1)(1)(3)(4)(7)(3)(8)(3)(1)(1)(2)(13)(22)}

我要回帖

更多关于 android的se已禁用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信