このトピックでは、事前定義された形状を Infragistics Excel Engine を使用して、画像をワークシートに追加する方法を説明します。
このトピックを理解するために、以下のトピックを参照することをお勧めします。
この手順では、ワークシートに画像を追加する方法を示します。画像は WorksheetImage クラスによって表され、ワークシートの Shapes コレクションに追加されます。
以下のスクリーンショットは、すべての任意のステップを含む最終結果のプレビューです。
この手順を実行するには、以下が必要です。
少なくとも 1 つのワークシートを持つ初期化されたワークブック。
以下はプロセスの概要です。
ストリームから画像を作成する
画像から WorksheetImage を作成する
twips で WorksheetImage の位置を構成する (オルタナティブ)
WorksheetImage のセルの位置を構成する (オルタナティブ)
WorksheetImage のセル内の位置を構成する (オルタナティブおよびオプション)
WorksheetImage のプロパティを構成する (オプション)
WorksheetImage をワークシートの Shapes コレクションに追加する
以下のステップでは、画像をワークシートに追加する方法を示します。
Image
オブジェクトを作成します。ストリームまたはファイル名を提供することにより、Image
クラスの静的メソッドを使用して、これを実行できます。
C# の場合:
string imgResource = "Assembly.Folder.File.png";
using (Stream stream = this.GetType().Assembly.GetManifestResourceStream(imgResource))
{
System.Drawing.Image img = System.Drawing.Image.FromStream(stream);
}
Visual Basic の場合:
Dim imgResource As String = "Assembly.Folder.File.png"
Using stream As Stream = Me.[GetType]().Assembly.GetManifestResourceStream(imgResource)
Dim img As System.Drawing.Image = System.Drawing.Image.FromStream(stream)
End Using
前述の手順から Image
インスタンスを提供することにより、WorksheetImage
オブジェクトを作成します。
C# の場合:
WorksheetImage wsi = new WorksheetImage(img);
Visual Basic の場合:
Dim wsi As WorksheetImage = new WorksheetImage(img)
SetBoundsInTwips メソッドを使用して、画像の境界線を twips で指定する必要があります。
C# の場合:
Graphics gfx = Graphics.FromImage(img);
wsi.SetBoundsInTwips(
this.xamSpreadsheet1.Workbook.Worksheets[0],
new Rect(
PixelsToTwips(50, gfx), // 左 = 50
PixelsToTwips(50, gfx), // 上 = 50
PixelsToTwips(img.Width, gfx),
PixelsToTwips(img.Height, gfx)));
Visual Basic の場合:
Dim gfx As Graphics = Graphics.FromImage(img)
' left = 50
' top = 50
wsi.SetBoundsInTwips(xamSpreadsheet1.Workbook.Worksheets(0), _
New Rect(PixelsToTwips(50, gfx), _
PixelsToTwips(50, gfx), _
PixelsToTwips(img.Width, gfx), _
PixelsToTwips(img.Height, gfx)))
C# の場合:
public double PixelsToTwips(int pixels, Graphics gfx)
{
// ピクセルをポイントに変換します
double p = pixels * 72 / gfx.DpiX;
// ポイントを twips に変換します
return p * 20;
}
Visual Basic の場合:
Public Function PixelsToTwips(pixels As Integer, gfx As Graphics) As Double
' convert pixels to points
Dim p As Double = pixels * 72 / gfx.DpiX
' convert points to twips
Return p * 20
End Function
TopLeftCornerCell プロパティと BottomRightCornerCell プロパティを使用して、画像を使用するセルを指定する必要があります。
C# の場合:
wsi.TopLeftCornerCell = this.xamSpreadsheet1.Workbook.Worksheets[0].Rows[3].Cells[2];
wsi.BottomRightCornerCell = this.xamSpreadsheet1.Workbook.Worksheets[0].Rows[5].Cells[5];
Visual Basic の場合:
wsi.TopLeftCornerCell = xamSpreadsheet1.Workbook.Worksheets(0).Rows(3).Cells(2)
wsi.BottomRightCornerCell = xamSpreadsheet1.Workbook.Worksheets(0).Rows(5).Cells(5)
また、 TopLeftCornerPosition プロパティと BottomRightCornerPosition プロパティを使用して、左上と右下のコーナーの正確な位置を指定できます。これらの位置はパーセンテージ値で指定されるため、いずれかのコーナーをセルの中央に置きたい場合は、両方のプロパティに Point(50, 50)
を使用します。
以下のコードはこの例を実装します。
C# の場合:
wsi.TopLeftCornerPosition = new System.Windows.Point(50, 50);
wsi.BottomRightCornerPosition = new System.Windows.Point(50, 50);
Visual Basic の場合:
wsi.TopLeftCornerPosition = new System.Windows.Point(50, 50)
wsi.BottomRightCornerPosition = new System.Windows.Point(50, 50)
画像の背景が透明である場合、ワークシートのグリッド線が表示されないように、画像の背景色を設定できます。
また、任意のアウトラインを WorksheetImage
インスタンスに設定 (または既定のアウトラインを削除) できます
以下のコードは、WorksheetImage
に白い背景を追加し、デフォルトのアウトラインを削除する方法を示します。
C# の場合:
wsi.Fill = new ShapeFillSolid(Colors.White);
wsi.Outline = null;
Visual Basic の場合:
wsi.Fill = new ShapeFillSolid(Colors.White)
wsi.Outline = Nothing
WorksheetImage
インスタンスを Shapes
コレクションに追加します。
以下のコードはこの例を実装します。
C# の場合:
this.xamSpreadsheet1.Workbook.Worksheets[0].Shapes.Add(wsi);
Visual Basic の場合:
xamSpreadsheet1.Workbook.Worksheets(0).Shapes.Add(wsi)
このトピックの追加情報については、以下のトピックも合わせてご参照ください。