Initial commit: OtozaiPrinter (AveryDennisonUtil) ラベル/レシート レイアウト設計・印刷 MFC アプリ
- 用紙設計キャンバス(1/100mm 基準)・テキスト/画像/矩形/直線アイテム - コピー/複製/Zオーダー/整列/グリッドスナップ、原紙(下絵)読込と印刷可否 - GDI 直接印刷、.otz 保存/再読込(版数つき) - MFC/CRT 静的リンクで VS2022 IDE から F5 デバッグ可
This commit is contained in:
+36
@@ -0,0 +1,36 @@
|
||||
// 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;
|
||||
};
|
||||
Reference in New Issue
Block a user