SPREAD for WPF 3.0J - GcSpreadSheet
イメージ型セル
SPREAD for WPF 3.0J - GcSpreadSheet > 開発者ガイド > セル型 > イメージ型セル

イメージ型セルはセルに画像を表示します。ImageCellTypeクラスを使用して設定します。

主な設定は次のとおりです。

セルの値の ImageSource への変換

イメージ型セルの値は画像のソースを表す ImageSource または画像を表すバイナリ データであることが求められます。たとえば、セルの値がイメージ ファイルへのパスを表す文字列である場合があります。このようにセルの値が ImageSource 型、または画像を表すバイナリ データでない場合、値を ImageSource に変換する ImageConverter を設定することで対応できます。ImageConverter は IImageSourceConverter インタフェースを実装して作成します。

スプレッドシートにイメージ型セルを設定する方法は2つあります。

XAMLの使用

次のサンプルコードはXAMLでイメージ型セルを設定して、コードで画像のパスを定義します。

コードのコピー
<Window.Resources>
    <local:SpreadFilePathToImageConverter x:Key="MyImageConverter"/>
</Window.Resources>
<Grid>
    <gss:GcSpreadSheet x:Name="GcSpreadSheet" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
        <gss:GcSpreadSheet.Sheets>
            <gss:SheetInfo ColumnCount="20" RowCount="50">
                <gss:SheetInfo.Columns>
                    <gss:ColumnInfo Width="250">
                        <gss:ColumnInfo.CellType>
                            <CT:ImageCellType Stretch="Fill" ImageConverter="{StaticResource MyImageConverter}"/>
                        </gss:ColumnInfo.CellType>
                    </gss:ColumnInfo>
                </gss:SheetInfo.Columns>
            </gss:SheetInfo>
        </gss:GcSpreadSheet.Sheets>
    </gss:GcSpreadSheet>
</Grid>
コードのコピー
// イメージ型セルの値を設定します。
GcSpreadSheet.Workbook.ActiveSheet.Cells["A2"].Value = "pack://application:,,,/Images/SpreadPicture.png";
コードのコピー
' イメージ型セルの値を設定します。
GcSpreadSheet.Workbook.ActiveSheet.Cells("A2").Value = "pack://application:,,,/Images/SpreadPicture.png"

コードの使用

次のサンプルコードはアプリケーションの Image フォルダーに保存された SpreadPicture.png ファイルをイメージ型セルに読み込みます。SpreadFilePathToImageConverter クラスが、ファイルのパスを BitmapImage に変換します。

コードのコピー
// ImageCellTypeを設定します。
ImageCellType img = new ImageCellType();
img.Stretch = Stretch.Fill;
img.ImageConverter = new SpreadFilePathToImageConverter();
GcSpreadSheet.Workbook.ActiveSheet.Cells["C2"].CellType = img;

// 値を設定します。
GcSpreadSheet.Workbook.ActiveSheet.Cells["C2"].Value = "pack://application:,,,/Images/SpreadPicture.png";
コードのコピー
' ImageCellTypeを設定します。
Dim img As ImageCellType = New ImageCellType()
img.Stretch = Stretch.Fill
img.ImageConverter = New SpreadFilePathToImageConverter()
GcSpreadSheet.Workbook.ActiveSheet.Cells("C2").CellType = img

' 値を設定します。
GcSpreadSheet.Workbook.ActiveSheet.Cells("C2").Value = "pack://application:,,,/Images/SpreadPicture.png"
コードのコピー
public class SpreadFilePathToImageConverter : IImageSourceConverter
{
    public ImageSource GetImageSource(object value)
    {
        if (value != null)
        {
            BitmapImage bmi = new BitmapImage(new Uri(value.ToString(), UriKind.Absolute));
            return bmi;
        }
        else return null;
    }
}
コードのコピー
Public Class SpreadFilePathToImageConverter
    Implements IImageSourceConverter

    Public Function GetImageSource(ByVal value As Object) As ImageSource
        If value IsNot Nothing Then
            Dim bmi As BitmapImage = New BitmapImage(New Uri(value.ToString(), UriKind.Absolute))
            Return bmi
        Else
            Return Nothing
        End If
    End Function
End Class