社区
C++ Builder
帖子详情
请教如何在Builder中旋转图象的问题
weibz0525
2002-09-25 05:59:39
首先在form1中放置一个Image控件,然后读取BMP文件,在一个也就是这个Image控件中旋转这个。90度,180度也可以(当然在不失真的情况下旋转任意角度更好了)。请教
各位前辈他的算法是怎样?分数就200的,要的都拿去。
...全文
137
14
打赏
收藏
请教如何在Builder中旋转图象的问题
首先在form1中放置一个Image控件,然后读取BMP文件,在一个也就是这个Image控件中旋转这个。90度,180度也可以(当然在不失真的情况下旋转任意角度更好了)。请教 各位前辈他的算法是怎样?分数就200的,要的都拿去。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kony123
2002-09-26
打赏
举报
回复
不错不错!关注!
weibz0525
2002-09-26
打赏
举报
回复
晕,给错了,哈,不过也没关系,那位朋友的源代码也对我很有帮助,不过可亏了这为仁兄,怎么办??我在申请个帐号给你分好了,我的手机13945091911,你看怎么办呢?哎,真对不起了
weibz0525
2002-09-26
打赏
举报
回复
啊,太好了,完全正确哦。真谢谢这位朋友Libran,有些地方不太明白,那个
width-j-1是怎么会事呢?-1为什么?呵呵,可能菜点,好在我本来也菜啊,我看看能不能把分给你?我可还是第一次,走了,明天上午我会看你的帖子,谢谢其他的朋友,再见
Libran
2002-09-26
打赏
举报
回复
这样应该好些了:
Graphics::TBitmap *TmpBmp = new Graphics::TBitmap();
TmpBmp->Width = Image1->Height;
TmpBmp->Height = Image1->Width;
for(int i=0; i<TmpBmp->Height; i++)
{
for(int j=0; j<TmpBmp->Width; j++)
{
TmpBmp->Canvas->Pixels[j][i] =
Image1->Picture->Bitmap->Canvas->Pixels[i][TmpBmp->Width-j-1];
}
}
Image1->Width = TmpBmp->Width;
Image1->Height = TmpBmp->Height;
Image1->Picture->Bitmap->Assign(TmpBmp);
delete TmpBmp;
Libran
2002-09-26
打赏
举报
回复
真对不起,我做实验的图片是正方形的,没这个问题
还得改改
weibz0525
2002-09-26
打赏
举报
回复
谢谢各位朋友的大力支持,我是个新手,每个建议对我来说都是那么 珍贵。
尤其是给出源代码的二个朋友,可见你们的态度有多认真。程序我调试了,但有一个问题,不知你们是否发现。每次旋转都会有一部分是黑的,而且怎么旋转他也
不掉,为什么,没刷新吗?还是旋转过后的坐标不对??请大家帮忙。分我都不知道怎么给了??呵呵
sandrowjw
2002-09-25
打赏
举报
回复
用一个旋转矩阵就可以了啊
| cosi -sini |
| sini cosi |
速度还可以呀,不慢,就是闪一下。
再说了,你用ACDSee的时候旋转图片她还要闪一下那。
hdaq
2002-09-25
打赏
举报
回复
要不要任意角度旋转的呢?速度不慢哟!
Libran
2002-09-25
打赏
举报
回复
把企鹅的整理了一下,可以用了
Libran
2002-09-25
打赏
举报
回复
以下是顺时针旋转Image1,每次90度的代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Graphics::TBitmap *TmpBmp = new Graphics::TBitmap();
TmpBmp->Width = Image1->Width;
TmpBmp->Height = Image1->Height;
for(int i=0; i<TmpBmp->Height; i++)
{
for(int j=0; j<TmpBmp->Width; j++)
{
TmpBmp->Canvas->Pixels[j][i] =
Image1->Picture->Bitmap->Canvas->Pixels[i][TmpBmp->Height-j];
}
}
Image1->Picture->Bitmap->Assign(TmpBmp);
delete TmpBmp;
}
jojopoper
2002-09-25
打赏
举报
回复
最土的方法就是用扫描一行,然后翻转。。。(当然还有的人土到了用逐点扫描的方法。。。。让人吐血!)
比较方便的方法是用RotateFlip这个API,但是只能翻转90、180、270和整图对调,比较固定。
RotateFlip的用法在MSDN上有说明和例子,一看便知。
sjd163
2002-09-25
打赏
举报
回复
用坐标变换:(i,j)->(x,y)
x=i*cos(d)-j*sin(d);
y=i*sin(d)+j*cos(d);
Pro
Builder
快速原型开发技术
借助Pro
Builder
的模型导出功能,可以轻松地在任何外部3D建模套件
中
调整关卡。 Pro
builder
是使用插件的方式集成到Unity
中
的,这样熟悉Unity的开发可以很方便上手,菜单很简洁。 &...
OpenGL编程低级错误及常见
问题
解答
编程
中
,我遇到一个
问题
:在知道三自由度转角与臂长的前提下如何计算臂长端点的空间坐标 (x,y,z) 。我用 C 语言进行了编程,不知 OpenGL
中
是否有相应的函数? 答:这个
问题
属计算
问题
,需要自行编程解决, OpenGL...
OpenGL FAQ 常见
问题
OpenGL FAQ(2002/04/03)http://www.chinagamedev.nethttp://bbs.chinagamedev.net参与者:NewCyber3D.com、LangFox、mays、xnp、Qian Jingping问:我想看英文常见
问题
解答,有没有?答:...
WEB开发文档2 总结
http://blog.donews.com/lvjiyong/archive/2006/06/29/931071.aspx怎样将后台生成的在内存
中
的
图象
显示到客户端Microsoft IE WebControls下载地址如何在DATAGRID
中
使用JAVASCRIPT脚本控制DataGrid
中
连接到下一页显示...
OpenGL编程低级错误 + 常见
问题
解答
问:在OpenGL编程
中
,我遇到一个
问题
:在知道三自由度转角与臂长的前提下如何计算臂长端点的空间坐标(x,y,z)。我用C语言进行了编程,不知OpenGL
中
是否有相应的函数? 答:这个
问题
属计算
问题
,需要自行编程解决,...
C++ Builder
13,826
社区成员
102,678
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章