- 用紙設計キャンバス(1/100mm 基準)・テキスト/画像/矩形/直線アイテム - コピー/複製/Zオーダー/整列/グリッドスナップ、原紙(下絵)読込と印刷可否 - GDI 直接印刷、.otz 保存/再読込(版数つき) - MFC/CRT 静的リンクで VS2022 IDE から F5 デバッグ可
37 lines
1.2 KiB
C++
37 lines
1.2 KiB
C++
// ImageItem.h : 画像(ロゴ等)印刷アイテム
|
|
// 画像バイト列を .otz に埋め込み、ファイル単体で完結させる。
|
|
#pragma once
|
|
|
|
#include "PrintItem.h"
|
|
#include <atlimage.h>
|
|
#include <memory>
|
|
|
|
class CImageItem : public CPrintItem
|
|
{
|
|
DECLARE_SERIAL(CImageItem)
|
|
public:
|
|
CImageItem();
|
|
CImageItem(const CImageItem& other);
|
|
|
|
CByteArray m_bytes; // 元画像ファイルのバイト列(PNG/JPG/BMP)
|
|
int m_fit; // 0=矩形にフィット(縦横比無視), 1=縦横比保持
|
|
|
|
// ファイルから読み込んでバイト列を取り込む
|
|
BOOL LoadFromFile(LPCTSTR path);
|
|
|
|
// 元画像の画素サイズ(px)。取得できれば TRUE。
|
|
BOOL GetPixelSize(int& w, int& h);
|
|
// 元画像の埋め込み解像度(DPI)。情報が無ければ FALSE。
|
|
BOOL GetResolutionDpi(double& dx, double& dy);
|
|
|
|
ItemType Type() const override { return ItemType::Image; }
|
|
void Draw(CDC& dc, const CoordMap& map, bool selected) override;
|
|
CPrintItem* Clone() const override;
|
|
void Serialize(CArchive& ar) override;
|
|
|
|
private:
|
|
// バイト列から CImage を遅延生成(描画キャッシュ。シリアライズ対象外)
|
|
CImage* EnsureImage();
|
|
std::shared_ptr<CImage> m_cache;
|
|
};
|