ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

截图

2022-06-18 16:31:46  阅读:143  来源: 互联网

标签:截图 double CSYS xy UF pos2 pos1


 

 

#include "me.hpp"

void getBmp(double pos1[3], double pos2[3]);

extern DllExport void ufusr(char *param, int *returnCode, int rlen)
{
    UF_initialize();

    double douP1[3] = { 500,0,0 };
    double douP2[3] = { 0,500,0 };
    getBmp(douP1, douP2);

    UF_terminate();
}

extern int ufusr_ask_unload(void)
{
    return (UF_UNLOAD_IMMEDIATELY);
}

//将图片复制到剪贴板
BOOL CopyBmp2Clipboard(LPCTSTR szFilePath)
{
    BOOL bRet = FALSE;

    HBITMAP hBitmap = NULL;
    BOOL bClipboardOpened = FALSE;
    do
    {
        hBitmap = (HBITMAP)LoadImage(NULL, szFilePath, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
        if (hBitmap == NULL)
            break;

        if (!OpenClipboard(NULL))
            break;
        bClipboardOpened = TRUE;
        EmptyClipboard();
        SetClipboardData(CF_BITMAP, hBitmap);
        bRet = TRUE;
    } while (0);

    if (bClipboardOpened)
    {
        CloseClipboard();
    }
    if (hBitmap)
    {
        DeleteObject(hBitmap);
        hBitmap = NULL;
    }

    return bRet;
}

void getBmp(double pos1[3], double pos2[3])
{
    double PosXmin, PosXmax, PosYmin, PosYmax;
    UF_CSYS_map_point(UF_CSYS_WORK_COORDS, pos1,
        UF_CSYS_ROOT_WCS_COORDS, pos1);
    UF_CSYS_map_point(UF_CSYS_WORK_COORDS, pos1,
        UF_CSYS_ROOT_WCS_COORDS, pos2);

    tag_t view_work_tag = NULL_TAG;
    tag_t matrix_id = NULL_TAG,
        temp_wcs = NULL_TAG;
    char name[254];
    double plane_matrix[9], plane_origin[3] = { 0.0,0.0,0.0 };
    double  Center[3];
    double  Scale;

    UF_VIEW_ask_work_view(&view_work_tag);
    UF_OBJ_ask_name(view_work_tag, name);
    uc6433(name, plane_matrix);
    UF_CSYS_create_matrix(plane_matrix, &matrix_id);
    UF_CSYS_create_temp_csys(plane_origin, matrix_id, &temp_wcs);
    UF_CSYS_set_wcs(temp_wcs);

    double xy_clip_bounds[4];
    UF_VIEW_ask_current_xy_clip(view_work_tag, xy_clip_bounds);
    uc6430(name, Center, &Scale);
    UF_CSYS_map_point(UF_CSYS_WORK_COORDS, Center,
        UF_CSYS_ROOT_WCS_COORDS, Center);

    if (pos1[0]>pos2[0])
    {
        PosXmin = pos2[0];
        PosXmax = pos1[0];
    }
    else
    {
        PosXmin = pos1[0];
        PosXmax = pos2[0];
    }
    if (pos1[1]>pos2[1])
    {
        PosYmin = pos2[1];
        PosYmax = pos1[1];
    }
    else
    {
        PosYmin = pos1[1];
        PosYmax = pos2[1];
    }

    ////导出图片
    int upper_left_corners[2];
    int width, height;
    upper_left_corners[0] = 0;
    upper_left_corners[1] = 0;
    width = 0;
    height = 0;
    DWORD dwSize = 50;
    WCHAR temppath[50];
    GetTempPath(dwSize, temppath);
    CString puch(temppath);
    puch = puch + "ugapi.bmp";

    char bmp_path[256];
    strcpy(bmp_path, CT2A(puch));

    UF_DISP_create_framed_image(bmp_path,
        UF_DISP_BMP,
        UF_DISP_WHITE,
        upper_left_corners,
        width,
        height);
    FILE *fp = fopen(bmp_path, "rb");
    //跳过位图文件头结构BITMAPFILEHEADER
    fseek(fp, sizeof(BITMAPFILEHEADER), 0);
    //定义位图信息头结构变量,读取位图信息头进内存,存放在变量head中
    BITMAPINFOHEADER head;
    fread(&head, sizeof(BITMAPINFOHEADER), 1, fp); //获取图像宽、高、每像素所占位数等信息
    int bmpWidth = head.biWidth;
    int bmpHeight = head.biHeight;

    fclose(fp);//关闭文件

    upper_left_corners[0] = bmpWidth*(PosXmin - xy_clip_bounds[0] - Center[0]) / (2 * xy_clip_bounds[1]);
    upper_left_corners[1] = bmpHeight*(xy_clip_bounds[3] + Center[1] - PosYmax) / (2 * xy_clip_bounds[3]);
    width = bmpWidth*(PosXmax - PosXmin) / (2 * xy_clip_bounds[1]);
    height = bmpHeight*(PosYmax - PosYmin) / (2 * xy_clip_bounds[3]);
    UF_DISP_create_framed_image(bmp_path,
        UF_DISP_BMP,
        UF_DISP_WHITE,
        upper_left_corners,
        width,
        height);


    CopyBmp2Clipboard(puch);
}

 

标签:截图,double,CSYS,xy,UF,pos2,pos1
来源: https://www.cnblogs.com/KMould/p/16388616.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有