VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 519|回复: 2

[已解决]入门水平,想做一个平面直角坐标系中,俩圆关系计算软件,遇到一系列问题。。。

[复制链接]
38_avatar_middle
最佳答案
0 
在线会员 发表于 2022-1-19 02:02:01 | 显示全部楼层 |阅读模式
本帖最后由 zmrghy 于 2022-1-19 02:16 编辑

入门水平,想做一个平面直角坐标系中,俩圆关系计算软件,遇到一系列问题。。。
入门水平,想做一个平面直角坐标系中,俩圆关系计算软件,遇到一系列问题。。。

一方面,编程技术方面。
另一方面,数学计算方面。
先说技术方面。。。
入门水平,用C++MFC绘图或者用C++CLR绘图,太难了。。。
用easyX绘图简单,easyX虽然也有窗口,但是没有textBox提供输入输出用。
也没有button按键,开始绘图和计算。。。
想到了,用CLR做软件界面。用pictureBox显示easyX绘制的图。。。
问题1.
点击计算后,system();调用easyX绘图时,会有调用窗口(控制台黑窗口),和绘图窗口闪过。。。
想隐藏,从网上找到了。。。
1. HWND句柄隐藏窗口
#include<windows.h>

        HWND hwnd = GetForegroundWindow();//获取最前端的窗口的句柄
        ShowWindow(hwnd, 0);//隐藏

2. VBS脚本隐藏窗口
Dim WShell
        Set Wshell=CreateObject("WScript.Shell")
                WShell.Run """"&"draw.exe" &"""", 0
                        Set WShell = Nothing
不知是使用方法不对,还是根本无法隐藏。
不但隐藏不了,还延长了控制台黑窗口显示时间。


问题2.
pictureBox显示图片。CLR窗口加载图片后,图片就无权修改和删除。
每次点击计算,都加载一个新的图片(不能重名)。之前加载的图片不显示还能删除。。。
程序窗口不关闭,图片就无权修改和删除。只能是程序启动时删除之前产生的图片。

入门水平,想做一个平面直角坐标系中,俩圆关系计算软件,遇到一系列问题。。。
入门水平,想做一个平面直角坐标系中,俩圆关系计算软件,遇到一系列问题。。。

再说计算方面的问题。
入门水平,想做一个平面直角坐标系中,俩圆关系计算软件,遇到一系列问题。。。
入门水平,想做一个平面直角坐标系中,俩圆关系计算软件,遇到一系列问题。。。


入门水平,想做一个平面直角坐标系中,俩圆关系计算软件,遇到一系列问题。。。 test.rar (54.55 KB, 下载次数: 2)




上一篇:vs报错/救救孩子
下一篇:VC MFC ListCtrl高级
38_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-1-19 12:48:51 | 显示全部楼层
为什么,没人回答。。。。
46_avatar_middle
最佳答案
7 
在线会员 发表于 2022-1-20 14:32:58 | 显示全部楼层    本楼为最佳答案   
bestAnswer
话说我也不喜欢MFC,太复杂。CLR我也不懂,EasyX也不懂!!!

我只用GDI写了个小的演示程序,仅供参考!

求交点坐标太复杂了,如果你写不出可以去百度。这里仅提供一个链接:https://blog.csdn.net/zx3517288/article/details/53326420


  1. VOID OnButtonOK(HWND hDlg)
  2. {
  3.         g_iX1 = GetDlgItemInt(hDlg, IDC_EDIT_X1, NULL, FALSE);
  4.         g_iY1 = GetDlgItemInt(hDlg, IDC_EDIT_Y1, NULL, FALSE);
  5.         g_iR1 = GetDlgItemInt(hDlg, IDC_EDIT_R1, NULL, FALSE);
  6.         g_iX2 = GetDlgItemInt(hDlg, IDC_EDIT_X2, NULL, FALSE);
  7.         g_iY2 = GetDlgItemInt(hDlg, IDC_EDIT_Y2, NULL, FALSE);
  8.         g_iR2 = GetDlgItemInt(hDlg, IDC_EDIT_R2, NULL, FALSE);
  9.         InvalidateRect(hDlg, NULL, TRUE);

  10.         double x12 = fabs((double)g_iX1 - (double)g_iX2);
  11.         double y12 = fabs((double)g_iY1 - (double)g_iY2);

  12.         double diff = fabs((double)g_iR1 - (double)g_iR2);
  13.         double Sum = (double)g_iR1 + (double)g_iR2;

  14.         double L = sqrt(x12 * x12 + y12 * y12);

  15.         if (L > Sum) TwoCirclesAreSeparated(hDlg); // 两圆相离
  16.         else if (L == Sum) TwoCirclesCircumscribe(hDlg); // 两圆外切
  17.         else if (L == diff) TwoCirclesInscribed(hDlg); // 两圆内切
  18.         else if (L < diff) TwoCirclesInclusion(hDlg); // 两圆内含
  19.         else TwoCirclesIntersect(hDlg); // 两圆相交
  20. }

  21. VOID TwoCirclesAreSeparated(HWND hDlg) // 两圆相离
  22. {
  23.         SetDlgItemText(hDlg, IDC_EDIT7, L"两圆相离");
  24. }
  25. VOID TwoCirclesCircumscribe(HWND hDlg) // 两圆外切
  26. {
  27.         SetDlgItemText(hDlg, IDC_EDIT7, L"两圆外切");
  28. }
  29. VOID TwoCirclesInscribed(HWND hDlg) // 两圆内切
  30. {
  31.         SetDlgItemText(hDlg, IDC_EDIT7, L"两圆内切");
  32. }
  33. VOID TwoCirclesInclusion(HWND hDlg) // 两圆内含
  34. {
  35.         SetDlgItemText(hDlg, IDC_EDIT7, L"两圆内含");
  36. }
  37. VOID TwoCirclesIntersect(HWND hDlg) // 两圆相交
  38. {
  39.         SetDlgItemText(hDlg, IDC_EDIT7, L"两圆相交");
  40. }
复制代码


编译好的工程: 入门水平,想做一个平面直角坐标系中,俩圆关系计算软件,遇到一系列问题。。。 CircleRelation.rar (20.07 KB, 下载次数: 4)
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2022-10-5 03:36

Powered by CcTry.CoM

© 2009-2021 cctry.com

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