Project1

标题: 如何缩放Bitmap对象? [打印本页]

作者: 杂兵天下    时间: 2012-2-23 18:33
标题: 如何缩放Bitmap对象?
如何缩放Bitmap对象?
求解。。。
只要能缩放就可以,对质量没有任何要求
作者: coolsoul    时间: 2012-2-23 18:35
什么语言?
作者: 仲秋启明    时间: 2012-2-23 18:57
@版主 ,移到RPG Maker 技术讨论区去
作者: 杂兵天下    时间: 2012-2-23 19:18
@凌童鞋帮楼上的忙,召唤真正版主
作者: coolsoul    时间: 2012-2-23 19:27
本帖最后由 coolsoul 于 2012-2-23 19:45 编辑

    调用格式: 〈无返回值〉 对象.Scaling (文本型 Byte,整数型 xProportion,整数型 yProportion)
    指定的文件路径图片将被替换为缩放后的图片。
    参数<1>的名称为“Byte”,类型为“文本型(text)”。欲被缩放的文件路径。
    参数<2>的名称为“xProportion”,类型为“整数型(int)”。本参数指定横向进行缩放的千分比。
    参数<3>的名称为“yProportion”,类型为“整数型(int)”。本参数指定纵向进行缩放的千分比。

Photo.zip (281.65 KB, 下载次数: 73)
作者: 杂兵天下    时间: 2012-2-23 19:42
coolsoul 发表于 2012-2-23 23:27
调用格式: 〈无返回值〉 对象.Scaling (文本型 Byte,整数型 xProportion,整数型 yProportion)
  ...

S=Win32API.new("photo","Scaling","LL","L")
S.call("Actor1.png",500,500)
我用这样的代码不能顺利缩放反倒出错了,为什么???
跪求答案!
作者: coolsoul    时间: 2012-2-23 19:53
.版本 2

写到文件 (取运行目录 () + “\1.jpg”, #图片)
Scaling (取运行目录 () + “\1.jpg”, 500, 500)
图片框1.图片 = 读入文件 (取运行目录 () + “\1.jpg”)

这是我易语言调用的源码 成功将图片缩放并显示到图片框1.
作者: yangff    时间: 2012-2-23 21:08
sprite的zoom_x,zoom_y。
作者: 后知后觉    时间: 2012-2-23 21:43
stretch_blt(dest_rect, src_bitmap, src_rect[, opacity])
src_bitmap の矩形 src_rect (Rect) から、このビットマップの矩形 dest_rect (Rect) にブロック転送を行います。

opacity には不透明度を 0 ~ 255 の範囲で指定できます。


作者: tseyik    时间: 2012-2-24 04:32
本帖最后由 tseyik 于 2012-2-24 04:35 编辑








作者: coolsoul    时间: 2012-2-24 08:44
楼主我突然感觉是我家壳的缘故,我发个没加壳版的你试试。
Photo.zip (360.91 KB, 下载次数: 22)
作者: fux2    时间: 2012-2-24 08:50
coolsoul 发表于 2012-2-24 08:44
楼主我突然感觉是我家壳的缘故,我发个没加壳版的你试试。

何必要用api,内置的stretch_blt已经可以满足要求了。
然后没事别扯到壳的问题上,只有脱壳才会导致兼容性异变,何况压缩壳基本不可能发生这种事。
继续试问这dll不返回序列化的图像数据叫rgss是如何接收,rgss那边也不开辟变量来储存。
作者: 杂兵天下    时间: 2012-2-24 10:35
后知后觉 发表于 2012-2-24 01:43
stretch_blt(dest_rect, src_bitmap, src_rect[, opacity])
src_bitmap の矩形 src_rect (Rect) から、こ ...

Declare Function StretchBlt Lib "gdi32" Alias "StretchBlt" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
作者: zhangbanxian    时间: 2012-2-24 11:53
首先,Bitmap对象是rgss不是ruby...
按5楼的说法,他的dll正确调用方法应该是
  1. S=Win32API.new("photo","Scaling","pii",nil)
  2. S.call("Actor1.png",500,500)
复制代码
其实,sprite已经提供了zoom_x和zoom_y,完全没必要从Bitmap入手,只要设立一个包含数个sprite的sprite_set类即可...
作者: 后知后觉    时间: 2012-2-24 12:25
杂兵天下 发表于 2012-2-24 10:35
Declare Function StretchBlt Lib "gdi32" Alias "StretchBlt" (ByVal hdc As Long, ByVal x As Long, By ...

对Bitmap对象直接进行修改是比较蛋疼的.
我记得 菲菲姐 有个 C++乱搞Bitmap什么的帖子.你可以去看看...

就不用api的情况下.
要么用 sprite的 zoom_x zoom_y
要么用Bitmap的 stretch_blt
XP和VX的F1是汉化的
作者: Wind2010    时间: 2012-2-24 16:41
同12L
clone一个Bitmap,然后清空原Bitmap,用stretch_blt把复制的Bitmap描绘进去




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1