创建BitMap

<span style="font-size:18px;">Bitmap pResource=(Bitmap)Image.FromFile("..\\..\\res\\animal.bmp");

Bitmap pBitMap = new Bitmap(36, 36);        //BitMap大小
Graphics pGraphics = Graphics.FromImage(pBitMap);       //创建Graphics对象
Rectangle pDestRec = new Rectangle(0, 0, 39, 39);         //创建所绘制图像的位置和大小,以PictureEdit左上角为(0,0)

Rectangle pSrcRec = new Rectangle(0, 2*39, 39, 39);     //创建所截取bmp图像的位置
pGraphics.DrawImage(pResource, pDestRec, pSrcRec, System.Drawing.GraphicsUnit.Pixel);     //绘制出所需要的bitmap

 

 

将图片会知道pictureEdit上:先创建一个Graphics对象,然后将创建的BitMap进行绘制

if (this.pictureEdit1.Image == null)
{
Bitmap bmp = new Bitmap(this.pictureEdit1.Width, pictureEdit1.Height);
this.pictureEdit1.Image = bmp;
}
Graphics g = Graphics.FromImage(this.pictureEdit1.Image);

g.DrawImage(pBitMap, 20, 95,38,38);</span>

JNI (Java Native Interface) 是Java提供的接口,它允许Java代码直接与C/C++库交互。如果你想在C语言中创建Bitmap并在Android平台上使用,你需要做以下几个步骤: 1. **包含头文件**: 首先,包括必要的Android Native Development Kit (NDK) 和开源图像处理库(如OpenCV或Skia)的头文件。 ```c #include <android/log.h> #include <EGL/egl.h> #include <GLES2/gl2.h> #include <skia/SkBitmap.h> ``` 2. **定义结构体映射**: 定义一个对应于Java Bitmap的数据结构,以便在两者之间传递数据。例如,可以使用`jobject`作为Java Bitmap的指针。 ```c typedef jobject (*CreateBitmapFunc)(JNIEnv *env, jobject thiz); ``` 3. **创建Bitmap函数**: 使用`skia::SkBitmap`构造一个Bitmap实例,并将其转换为合适的格式(如ARGB_8888)。然后,可以使用JNI的`NewGlobalRef`将Bitmap包装成一个全局引用,使其可以在JNI上下文中持久存在。 ```c SkBitmap createSkBitmap(JNIEnv *env, jobject thiz) { // 创建SkBitmap... SkBitmap bitmap; // 设置颜色类型、尺寸等... return env->NewGlobalRef(bitmap.asInterface()); } ``` 4. **注册函数**: 将这个C函数注册到JNI中,这样Java才能通过JNI调用它。 ```c static const JNINativeMethod methods[] = { {"nativeCreateBitmap", "(Landroid/content/Context;)Ljava/lang/Object;", reinterpret_cast<void*>(createSkBitmap)} }; int registerNativeMethods(JNIEnv* env, const char* className, const JNINativeMethod* gMethods, int numMethods) { return env->RegisterNatives(className, gMethods, numMethods); } ``` 5. **JNI桥接**: 在Java端,你需要创建一个Java类并声明一个与C函数相对应的方法,然后在需要的地方调用这个方法。 ```java public native static Bitmap createBitmap(Context context); // 在Java代码里像这样调用: Bitmap bitmap = createBitmap(context); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值