gdi+ 打印的问题,尺寸不对。

ljn2 2004-04-08 11:24:38
我的打印机在A4上是(像素:4800,6800,毫米210,288),
不知gdi+使用的是哪种单位,画了个0,0,100,100的框,打印到A4纸上一看,
如果说是像素,那么明显大于了100,100的范围,如果说是1/10毫米,又明显太小.
那位打过,给个提示啊
...全文
522 14 打赏 收藏 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljn2 2004-04-12
  • 打赏
  • 举报
回复
OK 搞定了谢谢大家
Boll 2004-04-12
  • 打赏
  • 举报
回复
The Unit enumeration specifies the unit of measure for a given data type.

Syntax

typedef enum {
UnitWorld = 0,
UnitDisplay = 1,//1/96英寸
UnitPixel = 2, //1像素
UnitPoint = 3,//1/72英寸
UnitInch = 4,
UnitDocument = 5,//1/300英寸
UnitMillimeter = 6//1mm
} Unit;

Constants

UnitWorld
Specifies world coordinates, a nonphysical unit.

UnitDisplay
Specifies display units. For example, if the display device is a monitor, then the unit is 1 pixel.

UnitPixel
Specifies that a unit is 1 pixel.

UnitPoint
Specifies that a unit is 1 point or 1/72 inch.

UnitInch
Specifies that a unit is 1 inch.

UnitDocument
Specifies that a unit is 1/300 inch.

UnitMillimeter
Specifies that a unit is 1 millimeter.

是啊,你用SetPageUnit设置坐标计量单位是对的
ljn2 2004-04-11
  • 打赏
  • 举报
回复
封杀并不是问题的关键,大家不用老是盯着不放

SetMapMode是gdi函数,gdi+里不管用。估计得用SetPageUnit
mynameisno1 2004-04-11
  • 打赏
  • 举报
回复
什么叫被封杀?

映射模式设了吗
SetMapMode()
ljn2 2004-04-11
  • 打赏
  • 举报
回复
谢谢geniusage(),我再试试.

to zhangcrony,我还健在.
smallbull 2004-04-10
  • 打赏
  • 举报
回复
关注
geniusage 2004-04-10
  • 打赏
  • 举报
回复
为什么被封杀呢
geniusage 2004-04-10
  • 打赏
  • 举报
回复
就是说你传的(200, 500) ,(200, 150)是世界坐标,gdi+做了两次转换,
world->page->device
zhangcrony 2004-04-10
  • 打赏
  • 举报
回复
楼主被封杀,大家不要回了
geniusage 2004-04-10
  • 打赏
  • 举报
回复
GDI+用World Transformation(世界坐标),page Transformation 和device Transformation 三种坐标。你画的是用像素,画出来的大小,根据你
的设备的dpi,就是//REAL dpiX = graphics.GetDpiX();
//REAL dpiY = graphics.GetDpiY();
你可以算出大小来,如果是96,就是37.795像素/厘米,

那377.95像素就是10厘米
ljn2 2004-04-09
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>
using namespace Gdiplus;

INT main()
{
// Initialize GDI+.
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

DOCINFO docInfo;
ZeroMemory(&docInfo, sizeof(DOCINFO));
docInfo.cbSize = sizeof(DOCINFO);
docInfo.lpszDocName = "GdiplusPrint";

// Create a PRINTDLG structure, and initialize the appropriate fields.
PRINTDLG printDlg;
ZeroMemory(&printDlg, sizeof(PRINTDLG));
printDlg.lStructSize = sizeof(PRINTDLG);
printDlg.Flags = PD_RETURNDC;

// Display a print dialog box.
if(!PrintDlg(&printDlg))
{
printf("Failure\n");
}
else
{
// Now that PrintDlg has returned, a device context handle
// for the chosen printer is in printDlg->hDC.

StartDoc(printDlg.hDC, &docInfo);
StartPage(printDlg.hDC);
Graphics* graphics = new Graphics(printDlg.hDC);
Pen* pen = new Pen(Color(255, 0, 0, 0));
graphics->DrawRectangle(pen, 200, 500, 200, 150);
graphics->DrawEllipse(pen, 200, 500, 200, 150);
graphics->DrawLine(pen, 200, 500, 400, 650);
delete pen;
delete graphics;
EndPage(printDlg.hDC);
EndDoc(printDlg.hDC);
}

if(printDlg.hDevMode)
GlobalFree(printDlg.hDevMode);
if(printDlg.hDevNames)
GlobalFree(printDlg.hDevNames);
if(printDlg.hDC)
DeleteDC(printDlg.hDC);

GdiplusShutdown(gdiplusToken);
return 0;

}
abrams 2004-04-09
  • 打赏
  • 举报
回复
把你代码贴出来
ljn2 2004-04-09
  • 打赏
  • 举报
回复
up
ljn2 2004-04-09
  • 打赏
  • 举报
回复
up
内容概要:本文围绕基于物理场的动态模式分解(piDMD)展开研究,重点探讨其在流体力学、热传导及多物理耦合系统中的建模与应用。通过Matlab代码实现,将传统的动态模式分解(DMD)方法与物理场控制方程相结合,引入物理约束以增强数据驱动模型的物理一致性,从而提升对复杂非线性系统的模态提取精度与长期预测能力。文章系统阐述了piDMD的理论基础、数学推导过程与算法实现步骤,并结合典型物理场仿真案例(如Navier-Stokes方程驱动的流场演化)进行验证,展示了其在降阶建模、主导模态识别和时空动态可视化方面的优越性能,适用于高维、强耦合、非平稳系统的分析与优化。; 适合人群:具备一定数值计算、流体力学、控制理论或数据驱动建模背景,熟悉Matlab编程与线性代数运算,从事科学研究、工程仿真或系统辨识工作的研究生、科研人员及工程师。; 使用场景及目标:①实现对流场、温度场等物理场的高效降阶建模与动态行为预测;②提取符合物理规律的关键模态,用于系统稳定性分析与控制设计;③支撑复杂系统的状态估计、异常检测与优化调控等下游任务。; 阅读建议:建议读者结合提供的Matlab代码逐行调试与运行,深入理解piDMD算法中物理约束的嵌入方式及其对模态质量的影响,同时可尝试将其迁移至其他偏微分方程描述的物理系统中进行拓展验证与应用。
内容概要:本文研究了在峰谷分时电价引导下,基于多目标优化遗传算法NSGA-II的电动汽车充电负荷优化问题。通过构建以电网负荷波动最小化和用户充电成本最低为核心的多目标优化模型,利用NSGA-II算法求解获得帕累托最优解集,实现对大规模电动汽车充电行为的有序引导。文中系统阐述了峰谷电价激励机制的设计原理、电动汽车充电负荷的数学建模方法、多目标优化问题的形式化表达以及NSGA-II算法的具体实现流程,并借助Matlab平台进行仿真验证,结果表明该策略能有效平抑电网负荷峰谷差、降低用户充电支出并提升电力系统的运行效率与稳定性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事智能电网、电动汽车调度、需求侧管理等相关领域的研究生或科研人员。; 使用场景及目标:①研究峰谷电价政策对电动汽车充电行为的影响机制;②掌握NSGA-II算法在电力系统多目标优化中的具体应用;③实现电动汽车集群的有序充电调度以改善电网负荷曲线; 阅读建议:此资源结合了电力经济学与智能优化算法,建议读者在学习过程中重点关注模型构建与算法实现的衔接部分,动手复现仿真代码以深入理解参数设置与结果分析过程。
详情可查看下方数据集可视化效果。 【数据集概况】 · 检测类别(中文):[电梯(elevator)] · 训练集:1468 张 · 验证集:157 张 · 测试集:158 张 · 总计:1783 张 该数据集聚焦于各类建筑内部及外部环境中的电梯目标检测任务,涵盖住宅楼、办公楼、商场、酒店等多种典型场景下的电梯结构。图像采集覆盖不同光照条件、材质类型与安装位置,充分体现了实际应用中电梯的多样性与复杂性,为智能楼宇管理、安防监控及无障碍设施识别等方向提供了高质量的视觉基础支持。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 72 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9446** mAP50-95 | 0.6531 Precision | 0.9305 Recall | 0.8777 train/box_loss | 0.5807 train/cls_loss | 0.3505 val/box_loss | 1.0020 val/cls_loss | 0.6208 【训练过程分析】 72 轮训练后 mAP50 达到 0.9446,模型收敛良好。Loss 曲线前段快速下降,后段趋于平稳,val_loss 无反弹,没有明显过拟合。但 mAP50-95 为 0.6531,和 mAP50 差距 0.29,定位精度仍有优化空间。 【模型性能评估】 Precision 0.9305、Recall 0.8777,精度高于召回,存在一定漏检。 【预测效果展示】 验证集预测效果较好,检测框基本准确覆盖电梯,置信度整体偏高。 【改进建议】 1. 丰富场景...

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧