本篇文章给大家谈谈图片的放缩c语言,以及c语言图像缩放对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、c语言画图怎么编图形的缩放啊?2、openCV代码在vc++中实现图片缩放功能3、谁会用C++编程序画出图形,要求图行可以实现旋转,缩放,平移
c语言画图怎么编图形的缩放啊?
你可以这样做。比如有一个图形为三角形,在七巧板的中,它可能有8种状态,然后分别画出8种状态的图形,当你激活它的旋转程序后,就换一张另一个状态的图形。
或者写一个函数,参数为各个顶点的座标,旋转的时候通过计算,找到新状态的各个顶点的座标,这样也可以。
openCV代码在vc++中实现图片缩放功能
参考如下:
用vc6新建一个win32控制台程序;
/*
功能:实现加载jpg图片,并进行缩放显示
开发环境: winXP + vc6 + openCV1.0
头文件路径:
D:\opensource\opencv1.0\cv\include
D:\opensource\opencv1.0\cxcore\include
D:\opensource\opencv1.0\otherlibs\highgui
lib文件目录:
D:\opensource\opencv1.0\lib
用到的lib文件: cxcore.lib cv.lib highgui.lib
*/
#include stdio.h
#include cv.h
#include highgui.h
#include math.h
int main(int argc, char* argv[])
{
const char *imgName[] = {“源图像”, “缩放后图像”};
IplImage *src = 0;//源图像指针
IplImage *dst = 0;//目标图像指针
float scale = 0.5f;//缩放倍数为0.618倍
CvSize dst_cvsize;//目标图像尺寸
if ( argc == 2 (src = cvLoadImage(argv[1], CV_LOAD_IMAGE_UNCHANGED)) != 0 )
{
}
else
{
src = cvLoadImage(“3.jpg”, CV_LOAD_IMAGE_UNCHANGED);
if(!src)
{
printf(“Load source image failed, please check!\n”);
return -1;
}
}
dst_cvsize.width = (int)(src-width * scale);//目标图像的宽为源图象宽的scale倍
dst_cvsize.height = (int)(src-height * scale);//目标图像的高为源图象高的scale倍
dst = cvCreateImage( dst_cvsize, src-depth, src-nChannels);//构造目标图象
// cvResize(src, dst, CV_INTER_LINEAR);//缩放源图像到目标图像
cvResize(src, dst, CV_INTER_CUBIC);//缩放源图像到目标图像
cvNamedWindow(imgName[0], CV_WINDOW_AUTOSIZE);//创建用于显示源图像的窗口
cvNamedWindow(imgName[1], CV_WINDOW_AUTOSIZE);//创建用于显示目标图像的窗口
cvShowImage(imgName[0], src);//显示源图像
cvShowImage(imgName[1], dst);//显示目标图像
cvWaitKey(-1);//等待用户响应
cvReleaseImage(src);//释放源图像占用的内存
cvReleaseImage(dst);//释放目标图像占用的内存
cvDestroyWindow(imgName[0]);
cvDestroyWindow(imgName[1]);
return 0;
}
谁会用C++编程序画出图形,要求图行可以实现旋转,缩放,平移
缩放用:StretchBlt图片任意角度翻转:HBITMAP CBarDemoView::GetRotatedBitmapNT( HBITMAP hBitmap, float radians, COLORREF clrBack )
{
// Create a memory DC compatible with the display
CDC sourceDC, destDC;
sourceDC.CreateCompatibleDC( NULL );
destDC.CreateCompatibleDC( NULL ); // Get logical coordinates
BITMAP bm;
::GetObject( hBitmap, sizeof( bm ), bm ); float cosine = (float)cos(radians/180 * PI);
float sine = (float)sin(radians/180 * PI); int x1 = (int)(bm.bmHeight * sine);
int y1 = (int)(bm.bmHeight * cosine);
int x2 = (int)(bm.bmWidth * cosine + bm.bmHeight * sine);
int y2 = (int)(bm.bmHeight * cosine – bm.bmWidth * sine);
int x3 = (int)(bm.bmWidth * cosine);
int y3 = (int)(-bm.bmWidth * sine); int minx = min(0,min(x1, min(x2,x3)));
int miny = min(0,min(y1, min(y2,y3)));
int maxx = max(0,max(x1, max(x2,x3)));
int maxy = max(0,max(y1, max(y2,y3))); int w = maxx – minx;
int h = maxy – miny; // Create a bitmap to hold the result
HBITMAP hbmResult = ::CreateCompatibleBitmap(CClientDC(NULL), w, h); HBITMAP hbmOldSource = (HBITMAP)::SelectObject( sourceDC.m_hDC, hBitmap );
HBITMAP hbmOldDest = (HBITMAP)::SelectObject( destDC.m_hDC, hbmResult ); // Draw the background color before we change mapping mode
HBRUSH hbrBack = CreateSolidBrush( clrBack );
HBRUSH hbrOld = (HBRUSH)::SelectObject( destDC.m_hDC, hbrBack );
destDC.PatBlt( 0, 0, w, h, PATCOPY );
::DeleteObject( ::SelectObject( destDC.m_hDC, hbrOld ) ); // We will use world transform to rotate the bitmap
SetGraphicsMode(destDC.m_hDC, GM_ADVANCED);
XFORM xform;
xform.eM11 = cosine;
xform.eM12 = -sine;
xform.eM21 = sine;
xform.eM22 = cosine;
xform.eDx = (float)-minx;
xform.eDy = (float)-miny; SetWorldTransform( destDC.m_hDC, xform ); // Now do the actual rotating – a pixel at a time
destDC.BitBlt(0,0,bm.bmWidth, bm.bmHeight, sourceDC, 0, 0, SRCCOPY ); nWidth[m_count] = bm.bmWidth;
nHeight[m_count] = bm.bmHeight; // Restore DCs
::SelectObject( sourceDC.m_hDC, hbmOldSource );
::SelectObject( destDC.m_hDC, hbmOldDest ); return hbmResult;
}
关于图片的放缩c语言和c语言图像缩放的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。