public void drawRegion1(Image img, int x_src, int y_src, int width,
int height, int transform, int x_dest, int y_dest, int anchor) {
canvas.save();
int ix = 0, iy = 0;
switch (transform) {
case TRANS_NONE: // 0
break;
case TRANS_ROT90: // 90
canvas.rotate(90, x_dest, y_dest);
iy = height;
break;
case TRANS_ROT180: // 180
canvas.rotate(180, x_dest, y_dest);
iy = height;
ix = width;
break;
case TRANS_ROT270: // 270
canvas.rotate(270, x_dest, y_dest);
ix = width;
break;
case TRANS_MIRROR: // M
canvas.scale(-1, 1, x_dest, y_dest);// 镜像
ix = width;
break;
case TRANS_MIRROR_ROT90: // M90 j2me<-->android 270
canvas.scale(-1, 1, x_dest, y_dest);// 镜像
canvas.rotate(270, x_dest, y_dest);
ix = width;
iy = height;
break;
case TRANS_MIRROR_ROT180: // M180
canvas.scale(-1, 1, x_dest, y_dest);// 镜像
canvas.rotate(180, x_dest, y_dest);
iy = height;
break;
case TRANS_MIRROR_ROT270: // M270 j2me<-->android 90
canvas.scale(-1, 1, x_dest, y_dest);// 镜像90
canvas.rotate(90, x_dest, y_dest);
break;
}
canvas.clipRect(x_dest - ix, y_dest - iy, x_dest - ix + width, y_dest
- iy + height);
canvas.drawBitmap(img.getBitmap(), x_dest - ix - x_src, y_dest - iy - y_src,
paint);
canvas.restore();
}
protected Rect srcRec = new Rect();
protected RectF dstRec = new RectF();
public void drawRegion2(Image src, int x_src, int y_src, int width,
int height, int transform, int x_dest, int y_dest, int anchor) {
// TODO deal with parameter transform
srcRec.left = x_src;
srcRec.top = y_src;
srcRec.right = srcRec.left + width;
srcRec.bottom = srcRec.top + height;
dstRec.left = x_dest;
dstRec.top = y_dest;
dstRec.right = dstRec.left + width;
dstRec.bottom = dstRec.top + height;
this.canvas.drawBitmap(src.getBitmap(), srcRec, dstRec, paint);
}
分享到:
相关推荐
这篇博文"利用Android的Matrix类实现J2ME的drawRegion的镜像方法"探讨了如何在Android环境中复现J2ME的`drawRegion`功能,该功能通常用于在画布上绘制图像的特定区域并支持各种效果,如翻转(镜像)。 在J2ME中,`...
Nokia封装的`drawRegion`函数提供了一个灵活的接口,用于实现复杂的图像绘制效果。通过对变换类型和锚点的支持,开发人员可以根据具体需求轻松地调整图像的位置和方向。理解并掌握该函数的使用方法,有助于在图形...
`DrawPolygon`、`DrawLines`、`DrawText`、`DrawRegion`和`DrawCircle`这五个私有方法分别负责绘制多边形边、连接线、维度文字、填充区域和中心圆点。 1. `DrawPolygon`方法绘制多边形的边框,通过`Pen`对象指定...
至于旋转,J2ME通常使用drawRegion或drawImage配合旋转角度,而Android可以创建一个新的Bitmap进行翻转后再绘制,或者使用Matrix进行更复杂的图像变换。 综上所述,J2ME和Android在开发环境、工程组织、代码结构...
绘制多边形需要使用drawPolygon方法,绘制连线需要使用drawLines方法,绘制文字需要使用drawText方法,绘制覆盖区域需要使用drawRegion方法。 在drawPolygon方法中,需要使用Path类来绘制多边形,首先需要计算圆心...
- **Android**:覆盖 `onDraw(Canvas g)` 方法来进行绘制。 6. **Graphics** - **J2ME**:使用 `Graphics` 类来处理绘图操作。 - **Android**:使用 `Canvas` 类,提供了丰富的绘图功能。 7. **Image 的创建** ...
使用 `drawRegion()` 方法可以在 Canvas 组件上绘制图片,例如,`g.drawRegion(img,0,0,img.getWidth(),img.getHeight(),Sprite.TRANS_NONE,100,200,Graphics.TOP|Graphics.LEFT)`。图片的位置和大小可以通过参数来...
public void drawRegion(Image image_src, int x_src, int y_src, int width, int height, int transform, int x_dest, int y_dest, int anchor) { // 根据anchor位置调整dest坐标 // ... Bitmap new...
例如,你可能会有一个名为`DrawRegion`的方法,它接受一个Graphics对象,用于在指定的设备上下文上进行绘制。创建线程的代码可能如下: ```csharp Thread drawThread = new Thread(new ThreadStart(DrawRegion)); ...
3. **绘制形状**:使用`Graphics`对象,调用`DrawPath`或`DrawRegion`方法来绘制不规则形状。首先,你需要定义一个`GraphicsPath`或`Region`对象,然后添加直线、曲线等路径到其中。这些路径可以由`AddLine`、`...
1. 重写OnPaint事件:通过覆盖窗体的OnPaint事件,我们可以使用Graphics类中的DrawRegion方法绘制自己的形状。首先创建一个Region对象,然后使用Path类定义不规则形状的路径,最后将Region设置为窗体的区域。 ```...
同时,`Graphics`对象的`DrawREGION`方法可以用于绘制非矩形的透明区域。 2. **使用Windows API**: Delphi可以方便地调用Windows API函数,如`CreateRectRgn`和`SelectClipRgn`来创建和选择剪辑区域。我们可以在`...
使用J2ME提供的绘图API,如`drawImage()`和`drawRegion()`,将帧内容绘制到屏幕上,同时考虑精灵的翻转和位置。 2.4 总结 2D动画的核心在于有效地管理图像、帧、动作,并通过计算和绘图实现动态效果。开发者需要...
3. **裁剪与绘制**:在J2ME中,使用`Graphics`对象的`drawRegion()`方法可以从精灵图中裁剪出指定部分并将其绘制到屏幕上。这允许我们动态地改变精灵的位置和状态。 4. **优化内存使用**:由于J2ME平台资源有限,...
例如,使用`Glasslib`,你可以在窗体的`Load`事件中初始化玻璃效果,然后在窗体的`Paint`事件中绘制内容。以下是一个简单的使用示例: ```csharp using Glasslib; private void Form1_Load(object sender, ...
DrawRegion (Region) DisplayImage (Image) ``` 在这个例子中,我们创建了一个HSV颜色模型,范围大致为鲜艳的红色。然后读取图像,使用`ColorMatch`算子进行匹配,并显示匹配结果。根据实际情况,你可能需要调整...