开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

楼主: 扣扣625511478
收起左侧

[求助] 如何实现圆形抗锯齿图片框

[复制链接]
结帖率:100% (1/1)
发表于 2015-9-10 11:44:28 | 显示全部楼层   江西省南昌市
擦参考地址:在这里某论坛的【http://bbs.eyuyan.com/read.php?tid=344909】需要会员你自己去注册下载把
回复 支持 反对

使用道具 举报

结帖率:75% (9/12)
 楼主| 发表于 2015-9-10 13:35:24 | 显示全部楼层   江苏省连云港市
x1300806087 发表于 2015-9-10 11:44
擦参考地址:在这里某论坛的【http://bbs.eyuyan.com/read.php?tid=344909】需要会员你自己去注册下载把

你还真会复制。
回复 支持 反对

使用道具 举报

结帖率:75% (9/12)
 楼主| 发表于 2015-9-10 13:35:40 | 显示全部楼层   江苏省连云港市
   有人来看教我吗?
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)
发表于 2015-9-10 14:18:54 | 显示全部楼层   浙江省宁波市
回复 支持 反对

使用道具 举报

结帖率:96% (24/25)
发表于 2015-9-10 17:03:14 | 显示全部楼层   广东省深圳市
临时给你写了个C++版的,看看是不是你要的效果
1111.jpg


关键代码:
11111112222.jpg



完整代码:
  1. #include <windows.h>
  2. #include <gdiplus.h>
  3. using namespace Gdiplus;
  4. #pragma comment(lib,"gdiplus.lib")

  5. #define WIN_TITLE L"HH"

  6. void OnPaint(HDC hdc)
  7. {
  8. Graphics graphics(hdc);
  9. Image image(L"C:\\Users\\Administrator\\Pictures\\qq.jpg");
  10. Image imageBack(L"C:\\Users\\Administrator\\Pictures\\1V4o5xqtgr_src.jpg");
  11. graphics.DrawImage(&imageBack, 0, 0);
  12. Rect rect(50, 50, 100, 100);
  13. GraphicsPath circlepath;
  14. circlepath.AddEllipse(rect);
  15. graphics.SetClip(&circlepath);
  16. graphics.DrawImage(&image,rect);
  17. Pen pen(Color(0, 0, 255));
  18. graphics.DrawPath(&pen, &circlepath);
  19. graphics.ResetClip();
  20. graphics.DrawImage(&image, 100, 100);
  21. }

  22. LRESULT WINAPI WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
  23. {
  24. PAINTSTRUCT ps;
  25. HDC hdc;
  26. switch (msg)
  27. {
  28. case WM_PAINT:
  29. hdc = BeginPaint(hwnd, &ps);
  30. OnPaint(hdc);
  31. EndPaint(hwnd, &ps);
  32. break;
  33. case WM_DESTROY:
  34. PostQuitMessage(0);
  35. break;
  36. }
  37. return DefWindowProc(hwnd, msg, wparam, lparam);
  38. }

  39. int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd)
  40. {
  41. ULONG_PTR token;
  42. GdiplusStartupInput input;
  43. WNDCLASS wc;
  44. GdiplusStartup(&token, &input, NULL);
  45. wc.cbClsExtra = 0;
  46. wc.cbWndExtra = 0;
  47. wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
  48. wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  49. wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  50. wc.hInstance = hInstance;
  51. wc.lpfnWndProc = WndProc;
  52. wc.lpszClassName = WIN_TITLE;
  53. wc.lpszMenuName = NULL;
  54. wc.style = CS_VREDRAW | CS_HREDRAW;
  55. RegisterClass(&wc);
  56. HWND hwnd = CreateWindow(WIN_TITLE, WIN_TITLE, WS_OVERLAPPEDWINDOW, 0, 0, 600, 400,NULL,NULL,hInstance,NULL);
  57. ShowWindow(hwnd, nShowCmd);
  58. UpdateWindow(hwnd);
  59. MSG msg;
  60. ZeroMemory(&msg, sizeof(msg));
  61. while (GetMessage(&msg,NULL,0,0))
  62. {
  63. TranslateMessage(&msg);
  64. DispatchMessage(&msg);
  65. }
  66. GdiplusShutdown(token);
  67. return 0;
  68. }
复制代码



回复 支持 反对

使用道具 举报

结帖率:75% (9/12)
 楼主| 发表于 2015-9-11 09:37:14 | 显示全部楼层   江苏省连云港市
小生怕怕啊 发表于 2015-9-10 17:03
临时给你写了个C++版的,看看是不是你要的效果

还 C++ ,你怎么不写个java 版的给我呢?   我能看懂么?  这是易语言。  哥们。
回复 支持 反对

使用道具 举报

结帖率:96% (24/25)
发表于 2015-9-11 09:47:06 | 显示全部楼层   广东省深圳市
扣扣625511478 发表于 2015-9-11 09:37
还 C++ ,你怎么不写个java 版的给我呢?   我能看懂么?  这是易语言。  哥们。

这是JAVA版的代码
  1. BufferedImage bi1 = ImageIO.read(...);   // 根据需要是否使用 BufferedImage.TYPE_INT_ARGB BuffededImage bi2 = new BufferedImage(bi1.getWidth(),bi1.getHeight(),BufferedImage.TYPE_INT_RGB);   Ellipse2D.Double shape = new Ellipse2D.Double(0,0,bi1.getWidth(),bi1.getHeight());   Graphics2D g2 = bi2.createGraphic2(); g2.setClip(shape); // 使用 setRenderingHint 设置抗锯齿 g2.drawImage(bi1,0,0,null); g2.dispose();   ImageIO.write(bi2, "png", new File("..."));
复制代码
回复 支持 反对

使用道具 举报

结帖率:96% (24/25)
发表于 2015-9-11 09:57:06 | 显示全部楼层   广东省深圳市
扣扣625511478 发表于 2015-9-11 09:37
还 C++ ,你怎么不写个java 版的给我呢?   我能看懂么?  这是易语言。  哥们。

这是C#版的。
  1. protected override void OnPaint(PaintEventArgs e)
  2.         {
  3.             base.OnPaint(e);
  4.             Graphics graphics = e.Graphics;

  5.         Image image=Image.FromFile("C:\\Users\\Administrator\\Pictures\\qq.jpg");

  6.     Image imageBack=Image.FromFile("C:\\Users\\Administrator\\Pictures\\1V4o5xqtgr_src.jpg");

  7. graphics.DrawImage(imageBack, 0, 0);

  8. Rectangle rect=new Rectangle(50, 50, 100, 100);
  9.            

  10. GraphicsPath circlepath=new GraphicsPath();
  11.             

  12. circlepath.AddEllipse(rect);

  13. graphics.SetClip(circlepath);

  14. graphics.DrawImage(image,rect);

  15. Pen pen = new Pen(Color.FromArgb(255,255, 0, 0));
  16.             

  17. graphics.DrawPath(pen, circlepath);
  18.             

  19. graphics.ResetClip();

  20. graphics.DrawImage(image, 100, 100);


  21.         }
复制代码
回复 支持 反对

使用道具 举报

结帖率:96% (24/25)
发表于 2015-9-11 10:08:09 | 显示全部楼层   广东省深圳市
扣扣625511478 发表于 2015-9-11 09:37
还 C++ ,你怎么不写个java 版的给我呢?   我能看懂么?  这是易语言。  哥们。
  
窗口程序集名保 留  保 留备 注
窗口程序集1   
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
SetWindowLongA (取窗口句柄 (), -4, &WndProc)
子程序名返回值类型公开备 注
WndProc整数型 
参数名类 型参考可空数组备 注
hwnd整数型
msg整数型
wparam整数型
lparam整数型
psPaintStruct
如果真 (msg = 15)
hdc = BeginPaint (hwnd, &ps)
OnPaint (hdc)
EndPaint (hwnd, &ps)

子程序名返回值类型公开备 注
OnPaint  
参数名类 型参考可空数组备 注
hdc整数型
imageImage
imageBackImage
graphicsGraphics
rect矩形数据
circlepathGraphicsPath
penPen
graphics=Graphics.FromHdc (hdc)
image = “C:\\Users\\Administrator\\Pictures\\qq.jpg”
imageBack = “C:\\Users\\Administrator\\Pictures\\1V4o5xqtgr_src.jpg”
graphics.DrawImage (&imageBack, 0, 0)
rect (50, 50, 100, 100)
circlepath.AddEllipse (rect)
graphics.SetClip (&circlepath)
graphics.DrawImage (&image,rect)
pen (Color (0, 0, 255))
graphics.DrawPath (&pen, &circlepath)
graphics.ResetClip ()
graphics.DrawImage (&image, 100, 100)


i支持库列表   支持库注释   
eAPI应用接口支持库
这是易语言版的。


回复 支持 反对

使用道具 举报

结帖率:89% (157/176)
发表于 2015-9-11 18:36:02 | 显示全部楼层   广东省佛山市
艾玛,看到小生总的代码,叼叼的,C,JAVA,C#,E都来了,叼
回复 支持 反对

使用道具 举报

  高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表