
J2ME中切割图片的问题?
文档说:Imagesource;//theimagetobecopiedsource=Image.createImage(...);Imagecopy=Image.cre...
文档说:Image source; // the image to be copied
source = Image.createImage(...);
Image copy = Image
.createImage(source.getWidth(), source.getHeight());
Graphics g = copy.getGraphics();
g.drawImage(source, 0, 0, TOP|LEFT);
可以复制图片;下面有一段代码:
Image source; // the image to be copied
source = Image.createImage(...);
Image copy[];
for(int i=0;i<10;i++){
copy[i] = Image .createImage(23,23);
Graphics g = copy[i].getGraphics();
g.drawImage(source, 0, 0, g.TOP|g.LEFT);
}
这样就可以把一幅图片分成几个小块,怎么分的我不明白?
特别是:Image .createImage(23,23);这句话,参数没变怎么会创建不同的图片?能不能详细解释,加分
是我写错了,不是0,0;但是drawImage()是怎么创建不同的图片的,为什么要写成-23*i而不是+23*i,坐标是怎么移动的,谢谢,我会加分的
坐标和锚点有关系吗,
0-------------------------->着个方向是+还是-负
锚点
|
|
|
|
|
|
|往下是正还是负
0-------------------------------锚点--> 这个方向是正是负?(锚点在右上)
|
|
|
|
|
|
|
|
|
^往下是正是负? 展开
source = Image.createImage(...);
Image copy = Image
.createImage(source.getWidth(), source.getHeight());
Graphics g = copy.getGraphics();
g.drawImage(source, 0, 0, TOP|LEFT);
可以复制图片;下面有一段代码:
Image source; // the image to be copied
source = Image.createImage(...);
Image copy[];
for(int i=0;i<10;i++){
copy[i] = Image .createImage(23,23);
Graphics g = copy[i].getGraphics();
g.drawImage(source, 0, 0, g.TOP|g.LEFT);
}
这样就可以把一幅图片分成几个小块,怎么分的我不明白?
特别是:Image .createImage(23,23);这句话,参数没变怎么会创建不同的图片?能不能详细解释,加分
是我写错了,不是0,0;但是drawImage()是怎么创建不同的图片的,为什么要写成-23*i而不是+23*i,坐标是怎么移动的,谢谢,我会加分的
坐标和锚点有关系吗,
0-------------------------->着个方向是+还是-负
锚点
|
|
|
|
|
|
|往下是正还是负
0-------------------------------锚点--> 这个方向是正是负?(锚点在右上)
|
|
|
|
|
|
|
|
|
^往下是正是负? 展开
1个回答
展开全部
Image.createImage(23,23);这句是创建那些小块的,所以大小都一样。
比如原图大小是69×69的,就可以把它分成9个小块,每块都是23×23。
createImage那句只是确定小块的尺寸的,想让小块里的图片各不相同的关键,是在那句g.drawImagea();不过根据你贴出来的这段代码,我看不出最后这行drawImage如何生效。可能是你把source后面的两个int参数误写成了"0,0",也可能是这段代码本身就是错误的。
按这段代码的分块逻辑,代码可以这样写:
Image source; // 源大图
source = Image.createImage("/photo.jpg");//photo.jpg是放在res文件夹下的一张69×69的图片
Image copy[] = new Image[9];
for(int i = 0; i < 3; ++i){
for(int j = 0; j < 3; ++j){
copy[i*3 + j] = Image .createImage(23,23);
Graphics g = copy[i*3 + j].getGraphics();
g.drawImage(source, -23*j, -23*i, g.TOP|g.LEFT);
}
}
这段代码是现想的,没有测试过,不保证一定可以运行,只提供一个思路
——————————————————————————————
createImage(int, int)创建的是空白的Image,用drawImage()在上面画上不同的图案就得到不同的图块了。
比如把图分成如下九块:
| 0 | 1 | 2 |
———————
| 3 | 4 | 5 |
———————
| 6 | 7 | 8 |
想得到编号七的小块,怎么办?
“小图块的g.drawImage(大图, -23, -46, 锚点在左上);”
看看这句名不明白,明白的话就知道为什么坐标是负值了。如果看明白这个还不明白“坐标是怎么移动的”,我再来解释(估计不用了,坐标的意义懂了的话坐标移动并不难)
————————————————————————
这个……这就是基础问题了。锚点从不懂到懂很麻烦的,面对面的讲还好一些,光这么写字基本上是讲不清的。建议先静下心来看一下教绘图的章节,了解锚点的用法。
1.坐标和锚点一起决定了图片的显示位置。
2.无论锚点怎么设置都是左上角是(0,0),越往右x越大,越往下y越大。
比如原图大小是69×69的,就可以把它分成9个小块,每块都是23×23。
createImage那句只是确定小块的尺寸的,想让小块里的图片各不相同的关键,是在那句g.drawImagea();不过根据你贴出来的这段代码,我看不出最后这行drawImage如何生效。可能是你把source后面的两个int参数误写成了"0,0",也可能是这段代码本身就是错误的。
按这段代码的分块逻辑,代码可以这样写:
Image source; // 源大图
source = Image.createImage("/photo.jpg");//photo.jpg是放在res文件夹下的一张69×69的图片
Image copy[] = new Image[9];
for(int i = 0; i < 3; ++i){
for(int j = 0; j < 3; ++j){
copy[i*3 + j] = Image .createImage(23,23);
Graphics g = copy[i*3 + j].getGraphics();
g.drawImage(source, -23*j, -23*i, g.TOP|g.LEFT);
}
}
这段代码是现想的,没有测试过,不保证一定可以运行,只提供一个思路
——————————————————————————————
createImage(int, int)创建的是空白的Image,用drawImage()在上面画上不同的图案就得到不同的图块了。
比如把图分成如下九块:
| 0 | 1 | 2 |
———————
| 3 | 4 | 5 |
———————
| 6 | 7 | 8 |
想得到编号七的小块,怎么办?
“小图块的g.drawImage(大图, -23, -46, 锚点在左上);”
看看这句名不明白,明白的话就知道为什么坐标是负值了。如果看明白这个还不明白“坐标是怎么移动的”,我再来解释(估计不用了,坐标的意义懂了的话坐标移动并不难)
————————————————————————
这个……这就是基础问题了。锚点从不懂到懂很麻烦的,面对面的讲还好一些,光这么写字基本上是讲不清的。建议先静下心来看一下教绘图的章节,了解锚点的用法。
1.坐标和锚点一起决定了图片的显示位置。
2.无论锚点怎么设置都是左上角是(0,0),越往右x越大,越往下y越大。

2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询