画像のアンカーポイントについて
ピロ  2017/05/24(Wed) 02:01
画像の基準アンカーポイント設定はどうやれば出来ますか?
記事編集
Reputeless  2017/05/24(Wed) 17:20
draw() では左上が、drawAt() では画像の中心がアンカーポイントになります。ほかの場所に設定する場合はラッパークラスを作る必要があります。実装例を以下に示します。

# include <Siv3D.hpp>

class AnchoredTexture
{
private:

Texture m_texture;

Vec2 m_anchorPoint = Vec2(0, 0);

public:

AnchoredTexture() = default;

explicit AnchoredTexture(const FilePath& path, const Optional<Vec2>& anchorPoint = unspecified)
: m_texture(path)
, m_anchorPoint(anchorPoint.value_or(m_texture.size * 0.5)) {}

explicit AnchoredTexture(const Image& image, const Optional<Vec2>& anchorPoint = unspecified)
: m_texture(image)
, m_anchorPoint(anchorPoint.value_or(m_texture.size * 0.5)) {}

explicit AnchoredTexture(const Texture& texture, const Optional<Vec2>& anchorPoint = unspecified)
: m_texture(texture)
, m_anchorPoint(anchorPoint.value_or(m_texture.size * 0.5)) {}

void setAnchorPoint(const Vec2& pos)
{
m_anchorPoint = pos;
}

const Vec2& getAnchorPoint() const
{
return m_anchorPoint;
}

void draw(double x, double y) const
{
draw(Vec2(x, y));
}

void draw(const Vec2& pos) const
{
m_texture.draw(pos - m_anchorPoint);
}

void drawRotate(const Vec2& pos, double angle) const
{
m_texture.rotateAt(m_anchorPoint, angle).draw(pos - m_anchorPoint);
}
};

void Main()
{
AnchoredTexture texture(L"example/windmill.png", Vec2(100, 50));

while (System::Update())
{
texture.draw(Mouse::Pos());
}
}
編集
ピロ  2017/05/24(Wed) 23:50
返信ありがとうございます!!
出来ました!ありがとうございます!!
これからも利用させていただきます!
編集
件名
Re: 画像のアンカーポイントについて
名前
コメント
画像添付


投稿修正キー (投稿を修正する時に使います)
画像認証 (右画像の数字を入力) 投稿キー

- WEB PATIO -