superstar_v2/PrimaryFormParts/PrimaryForm.PromotionsAndMenuPanel.cs

58 lines
1.7 KiB
C#
Raw Normal View History

2025-04-07 16:54:10 +08:00
using System.IO;
namespace DualScreenDemo
{
public partial class PrimaryForm
{
private PromotionsAndMenuPanel promotionsAndMenuPanel;
private void InitializePromotionsAndMenuPanel()
{
promotionsAndMenuPanel = new PromotionsAndMenuPanel();
ResizeAndPositionControl(promotionsAndMenuPanel, 0, 0, 1440, 900);
this.Controls.Add(promotionsAndMenuPanel);
promotions = LoadImagesFromFolder("news");
menu = LoadImagesFromFolder("foods");
2025-04-07 16:54:10 +08:00
}
/// <summary>
/// 從指定資料夾載入所有 .jpg 圖片
/// </summary>
private List<Image> LoadImagesFromFolder(string folderName)
2025-04-07 16:54:10 +08:00
{
List<Image> images = new();
string folderPath = Utils.Env.GetPath(folderName, "");
if (folderPath.Equals("")) return images;
2025-04-07 16:54:10 +08:00
string[] imageFiles = Directory.GetFiles(folderPath, "*.jpg");
2025-04-07 16:54:10 +08:00
foreach (string filePath in imageFiles)
{
try
{
using var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
images.Add(Image.FromStream(new MemoryStream(ReadFully(fs))));
2025-04-07 16:54:10 +08:00
}
catch (Exception ex)
{
Console.WriteLine($"載入圖片失敗:{filePath},原因:{ex.Message}");
2025-04-07 16:54:10 +08:00
}
}
return images;
}
/// <summary>
/// 將 Stream 轉為 byte[],用於避免 Image 檔案鎖定
/// </summary>
private byte[] ReadFully(Stream input)
{
using MemoryStream ms = new();
input.CopyTo(ms);
return ms.ToArray();
}
2025-04-07 16:54:10 +08:00
}
}