using (SqlConnection myDatabaseConnection = new SqlConnection(myConnectionString.ConnectionString))
{
myDatabaseConnection.Open();
using (SqlCommand SqlCommand = new SqlCommand("Select Photo from Employee where EmpID LIKE '%' + @EmpID + '%' ", myDatabaseConnection))
{
SqlCommand.Parameters.AddWithValue("@EmpID", textBox1.Text);
DataSet DS = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(SqlCommand);
adapter.Fill(DS, "Images");
var imagesTable = DS.Tables["Images"];
var imagesRows = imagesTable.Rows;
var count = imagesRows.Count;
if (count <= 0)
return;
var imageColumnValue =
imagesRows[count - 1]["Image"];
if (imageColumnValue == DBNull.Value)
return;
var data = (Byte[])imageColumnValue;
using (var stream = new MemoryStream(data))
{
pictureBox1.Image = Image.FromStream(stream);
}
}
}
画像が大きすぎてpicturebox
が収まらない場合。 picturebox
に画像を収めるコードは何ですか?私のpicturebox
は正方形です。画像が長方形の場合、トリミングして this のように画像ボックスに表示する方法で、画像の下部が削除されます。
まず、画像をピクチャボックスに合わせて「サイズ変更」するために、PictureBox.SizeMode = PictureBoxSizeMode.StretchImage
を設定できます
事前に画像のクリッピング(つまり、側面または上下を切り取る)を行う場合は、必要な動作を明確に定義する必要があります(上部から開始し、pcitureboxの高さを埋め、残りをトリミングするか、下部、ピクチャボックスの高さを上部に埋めるなど)、ピクチャボックスと画像の両方のHeight/Widthプロパティを使用して画像をクリップし、探している効果を得るのはかなり簡単です。
次のコード行を使用すると、解決策が見つかります...
pictureBox1.ImageLocation = @"C:\Users\Desktop\mypicture.jpg";
pictureBox1.SizeMode =PictureBoxSizeMode.StretchImage;
Pictureboxのsizemodeプロパティをご覧ください。
pictureBox1.SizeMode =PictureBoxSizeMode.StretchImage;
PictureboxのSizeMode
プロパティをPictureSizeMode.Zoom
に設定できます。これにより、小さい画像のサイズが大きくなるか、大きい画像のサイズが小さくなり、PictureBoxがいっぱいになります
PictureBoxコントロールのSizeModeプロパティを使用して、Centerに設定できます。これにより、画像の中心が画像ボックスの中心に一致します。
pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;
それが役立つことを願っています。
VBにルーチンがあります。
しかし、あなたは2つのピクチャボックスを持っている必要があります..フレーム用に1つ..画像用に1つ..そしてそれは写真のサイズ比を維持する
想定されるpicFrameは画像フレームであり、picImgは画像です
Sub InsertPicture(ByVal oImg As Image)
Dim oFoto As Image
Dim x, y As Integer
oFoto = oImg
picImg.Visible = False
picImg.Width = picFrame.Width - 2
picImg.Height = picFrame.Height - 2
picImg.Location = New Point(1, 1)
SetPicture(picPreview, oFoto)
x = (picImg.Width - picFrame.Width) / 2
y = (picImg.Height - picFrame.Height) / 2
picImg.Location = New Point(x, y)
picImg.Visible = True
End Sub
私はあなたがC#としてそれを作ることができると確信しています....
PictureBox.SizeModeオプションには、「塗りつぶし」モードまたは「カバー」モードがありません。これは、画像ボックスを確実に塗りつぶすためのトリミングを除いて、ズームに似ています。 CSSでは、「カバー」オプションです。
このコードにより、次のことが可能になります。
static public void fillPictureBox(PictureBox pbox, Bitmap bmp)
{
pbox.SizeMode = PictureBoxSizeMode.Normal;
bool source_is_wider = (float)bmp.Width / bmp.Height > (float)pbox.Width / pbox.Height;
Bitmap resized = new Bitmap(pbox.Width, pbox.Height);
Graphics g = Graphics.FromImage(resized);
Rectangle dest_rect = new Rectangle(0, 0, pbox.Width, pbox.Height);
Rectangle src_rect;
if (source_is_wider)
{
float size_ratio = (float)pbox.Height / bmp.Height;
int sample_width = (int)(pbox.Width / size_ratio);
src_rect = new Rectangle((bmp.Width - sample_width) / 2, 0, sample_width, bmp.Height);
}
else
{
float size_ratio = (float)pbox.Width / bmp.Width;
int sample_height = (int)(pbox.Height / size_ratio);
src_rect = new Rectangle(0, (bmp.Height - sample_height) / 2, bmp.Width, sample_height);
}
g.DrawImage(bmp, dest_rect, src_rect, GraphicsUnit.Pixel);
g.Dispose();
pbox.Image = resized;
}
PictureBoxのSizeModeプロパティを変更してみてください。
画像をPictureBoxのBackGroundImageとして設定し、BackGroundImageLayoutを正しいモードに変更してみることもできます。