// ImageItem.h : 画像(ロゴ等)印刷アイテム // 画像バイト列を .otz に埋め込み、ファイル単体で完結させる。 #pragma once #include "PrintItem.h" #include #include 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 m_cache; };