zoukankan
html css js c++ java
VC 和 GDI+ 实现仿ibook 翻页效果
void CGdiplusTestView::OnDraw(CDC* pDC) { CGdiplusTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here // device context for painting CDC dcMemory; dcMemory.CreateCompatibleDC(NULL); CRect bkRect; GetClientRect(&bkRect); CBitmap bitmap; bitmap.CreateCompatibleBitmap(pDC, bkRect.Width(), bkRect.Height()); SelectObject(dcMemory.GetSafeHdc(), bitmap); topFrame =(bkRect.Height() - height)/2; leftFrame = (bkRect.Width()-2*width)/2; Image L1Image(L"pages/1.jpg",false), L2Image(L"pages/2.jpg",false), L3Image(L"pages/1.jpg",false), L4Image(L"pages/2.jpg",false); Graphics graphics(dcMemory.m_hDC); graphics.DrawImage(&L1Image,leftFrame,topFrame,width,height); graphics.DrawImage(&L2Image,leftFrame+width,topFrame,width,height); Pen pen(Color::Black);//设置画笔 SolidBrush brush(Color::Black);//设置画刷 //设置输出字体 FontFamily fontfamily(L"微软雅黑"); Font font(&fontfamily,12,FontStyleRegular,UnitPoint); StringFormat strfmt; RectF rectf(leftFrame+25, topFrame+25,280,400); RectF rectf2(leftFrame+50+width, topFrame+25,280,450); RectF rectf3(0, 0,280,450); Color clrPen(0,0,0,0); Pen penDraw(clrPen,0); graphics.DrawString(context,1024,&font,rectf,&strfmt,&brush); graphics.DrawString(context,1024,&font,rectf2,&strfmt,&brush); float undersideOffset = width; double a = 45 + (45 * m_x) / width; double radians = a * (3.14 / 180.0); double pageUndersideRotationAngle = (180 - (2 *a)); float calculated_y = (m_x) * (tan(radians)); float calculated_x = 0; GraphicsPath gpLeft,gpRight; //////////////////////////////////////////////////////////////////2 if (calculated_y < height) { gpLeft.AddLine( PointF(abs(width - m_x + undersideOffset),height),PointF(width + undersideOffset, height)); gpLeft.AddLine( PointF(width + undersideOffset, height),PointF(width + undersideOffset,(height - (float)calculated_y))); }else { gpLeft.AddLine(PointF(abs(width - m_x + undersideOffset),height), PointF(width + undersideOffset, height)); gpLeft.AddLine(PointF(width + undersideOffset, height),PointF(width + undersideOffset, 0)); calculated_x = height / tan(radians); gpLeft.AddLine( PointF(width + undersideOffset, 0),PointF(abs(width - (m_x - (float)calculated_x)+undersideOffset),0)); } gpLeft.CloseFigure(); Matrix PathTranslationMatrix; PathTranslationMatrix.Translate((float)leftFrame, (float)topFrame); gpLeft.Transform(&PathTranslationMatrix); Region oldRegion; graphics.GetClip(&oldRegion); graphics.SetClip(&gpLeft); graphics.DrawPath(&penDraw,&gpLeft); graphics.DrawImage(&L4Image,leftFrame+width,topFrame,width,height); graphics.SetClip(&oldRegion); //////////////////////////////////////////////////////////////////////3 Bitmap pageUndersideImage(width,height); undersideOffset = width; // if (height < calculated_y) { gpRight.AddLine( PointF(abs(width - m_x - undersideOffset), height), PointF(width - undersideOffset, height)); gpRight.AddLine( PointF(width - undersideOffset, height), PointF(width - undersideOffset, (height - (float)calculated_y))); }/*else { gpRight.AddLine(PointF(abs(width - m_x - undersideOffset), height),PointF(width - undersideOffset, height)); gpRight.AddLine(PointF(width - undersideOffset, height), PointF(width - undersideOffset, 0)); calculated_x = height / tan(radians); gpRight.AddLine( PointF(width - undersideOffset, 0), PointF(abs(width - (m_x - (float)calculated_x)-undersideOffset), 0)); }*/ gpRight.CloseFigure(); Graphics ug(&pageUndersideImage); ug.SetClip(&gpRight); ug.DrawPath(&penDraw,&gpRight); ug.DrawImage(&L3Image,0,0,width,height); ug.DrawString(context,1024,&font,rectf3,&strfmt,&brush); Matrix PathTranslationMatrix1; PathTranslationMatrix1.Translate(leftFrame+width*2-m_x,topFrame+height); PathTranslationMatrix1.Rotate((float)(pageUndersideRotationAngle)); graphics.SetTransform(&PathTranslationMatrix1); graphics.DrawImage(&pageUndersideImage, -int(m_x) ,-height ,width, height ); pDC->BitBlt(0,0,bkRect.Width(),bkRect.Height(),&dcMemory,0, 0,SRCCOPY); graphics.ReleaseHDC(dcMemory.m_hDC); }
查看全文
相关阅读:
008 WEBmvc的自动配置
007 springboot的日志问题
006 自动配置
005 profile
004 引入spring的xml配置文件
003 场景启动器
002 依赖管理
001-属性文件
TypeError: FileBox.fromUrl is not a function
npm 的是报错 @XXXXX postinstall 处理
原文地址:https://www.cnblogs.com/javawebsoa/p/2458418.html
最新文章
OCP 062中文考试题库(cuug内部资料)第3题
OCP 071中文考试题库(cuug内部资料)第4题
OCP 071中文考试题库(cuug内部资料)第3题
Free Goodies UVA
Training little cats poj3735
The Nerd Factor SPOJ
Max Sum of Max-K-sub-sequence hdu3415
Beautiful Dream hdu3418 (直接做或二分)
Another Easy Problem fzu1753
Divisors poj2992
热门文章
Happy 2006 poj2773
Racing Car Computer dp
Race to 1 概率dp
对Extjs 时间格式转换 前端可识别的时间格式
Extjs 绑定键盘事件
可怕的周报模板
html5 canvas 之arcTo
今天看到一篇很好的文章,介绍了html5常用几种api
010 注册web组件
009 错误处理
Copyright © 2011-2022 走看看