C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: メタファイルの生成について


(過去ログ 45 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■24261 / inTopicNo.1)  メタファイルの生成について
  
□投稿者/ たくま (1回)-(2008/08/31(Sun) 01:34:08)

分類:[C#] 

下記のコードでクリップボードに貼り付けられたメタファイルを、
Excelに貼り付けてみると、サイズが縦横ともの74%に縮められて
貼り付けられてしまいます。
また、同環境のノートPCの解像度を800*600にして同じことを
やってみると、100%になりました。(縮まるのは1024x768)
Graphics クラスとかMetafileクラスのヘルプをみてもメタファイルの
アスペクト比設定いじるメソッドとか見つけられなかったのです。。
どなたかアドバイスいただけないでしょうか?
・メタファイルのアスペクト比を触ることができるのかどうか?
・解像度によって貼り付けられたメタファイルのアスペクト比が
 異なっているのは、何が影響しているのか?
あたりを。。


private void btnGo_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
IntPtr ipHdc = g.GetHdc();
RectangleF r = new RectangleF();
r.Width = 1;
r.Height = 1;
Metafile mf = new Metafile(ipHdc, r, MetafileFrameUnit.Inch, EmfType.EmfOnly);
g.ReleaseHdc(ipHdc);
g.Dispose();
Graphics metaG = Graphics.FromImage(mf);
metaG.PageUnit = GraphicsUnit.Inch;
metaG.DrawEllipse(new Pen(Color.Blue, 0.01f), 0, 0, 0.5f, 0.5f);
metaG.Flush();
metaG.Dispose();
IntPtr hEMF, hEMF2;
hEMF = mf.GetHenhmetafile();
if (!hEMF.Equals(new IntPtr(0)))
{
hEMF2 = CopyEnhMetaFile(hEMF, new IntPtr(0));
if (!hEMF2.Equals(new IntPtr(0)))
{
if (OpenClipboard(this.Handle))
{
if (EmptyClipboard())
{
IntPtr hRes = SetClipboardData(14, hEMF2);
hRes.Equals(hEMF2);
CloseClipboard();
}
}
}
DeleteEnhMetaFile(hEMF);
}
mf.Dispose();
}

[DllImport("gdi32.dll")]
static extern IntPtr CopyEnhMetaFile(IntPtr hemfSrc, IntPtr hNULL);
[DllImport("user32.dll")]
static extern bool OpenClipboard(IntPtr hWndNewOwner);
[DllImport("user32.dll")]
static extern bool EmptyClipboard();
[DllImport("user32.dll")]
static extern IntPtr SetClipboardData(uint uFormat, IntPtr hMem);
[DllImport("user32.dll")]
static extern bool CloseClipboard();
[DllImport("gdi32.dll")]
static extern bool DeleteEnhMetaFile(IntPtr hemf);


環境
WindowsVistaBusiness
VisualStudio2005
Excel2007

引用返信 編集キー/
■24272 / inTopicNo.2)  Re[1]: メタファイルの生成について
□投稿者/ オショウ (38回)-(2008/08/31(Sun) 14:48:36)
No24261 (たくま さん) に返信
> 下記のコードでクリップボードに貼り付けられたメタファイルを、
> Excelに貼り付けてみると、サイズが縦横ともの74%に縮められて
> 貼り付けられてしまいます。

  未確認ですが・・・
  メタファイルの生成を、インチで行っておられますよね?!
  これをピクセルとかに変更すれば、問題はなくなるのでは?

以上。
引用返信 編集キー/
■24283 / inTopicNo.3)  Re[2]: メタファイルの生成について
□投稿者/ たくま (2回)-(2008/09/01(Mon) 00:30:38)
レスありがとうございましたm(_ _)m

>   メタファイルの生成を、インチで行っておられますよね?!
>   これをピクセルとかに変更すれば、問題はなくなるのでは?

いえ、生成時の指定をピクセルにしても、同様に勝手に縦横比率が変更された状態で、
Excelに貼り付けられてしまいます。。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -