winform零基础学习(五)—PictureBox控件+实现图片翻页下一张

  1. 定义
    PictureBox 控件可以显示来自位图、图标或者元文件,以及来自增强的元文件、JPEG 或 GIF 文件的图形。如果控件不足以显示整幅图象,则裁剪图象以适应控件的大小。
    2练习-图片的切换
    (1)新建
    在这里插入图片描述
    (2)程序
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace _10实现照片的上一张下一张翻页效果
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //设置图片如何在PictureBox中显示
            pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            pictureBox1.Image = Image.FromFile(@"C:\Users\SpringRain\Desktop\Picture\1.jpg");
            //获得指定文件夹的所有文件的全路径
           
        }
        int i = 0;

        string[] path = Directory.GetFiles(@"C:\Users\SpringRain\Desktop\Picture");
        /// <summary>
        /// 点击更换下一张图片
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
          
            i++;
            if (i == path.Length)
            {
                i = 0;
            }
            pictureBox1.Image = Image.FromFile(path[i]);
        }



        /// <summary>
        /// 点击上一张
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            i--;
            if (i < 0)
            {
                i = path.Length - 1;
            }
            pictureBox1.Image = Image.FromFile(path[i]);
        }
    }
}
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,可以使用以下代码来实现: ```c++ // 获取PictureBox控件的句柄 HWND hWnd = pictureBox1->Handle; // 创建一个DC HDC hDC = GetDC(hWnd); // 获取PictureBox的客户区域 RECT rect; GetClientRect(hWnd, &rect); // 创建一个和控件一样大小的内存DC HDC hMemDC = CreateCompatibleDC(hDC); HBITMAP hBitmap = CreateCompatibleBitmap(hDC, rect.right - rect.left, rect.bottom - rect.top); HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap); // 将控件的内容复制到内存DC PrintWindow(hWnd, hMemDC, PW_CLIENTONLY); // 将截图保存到文件 BITMAPINFO bitmapinfo = {0}; bitmapinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bitmapinfo.bmiHeader.biWidth = rect.right - rect.left; bitmapinfo.bmiHeader.biHeight = -(rect.bottom - rect.top); bitmapinfo.bmiHeader.biPlanes = 1; bitmapinfo.bmiHeader.biBitCount = 24; bitmapinfo.bmiHeader.biCompression = BI_RGB; BYTE *pData = NULL; HBITMAP hBitmapDib = CreateDIBSection(hMemDC, &bitmapinfo, DIB_RGB_COLORS, (void**)&pData, NULL, 0); // 将内存DC中的图像保存到文件 if (hBitmapDib != NULL) { HDC hMemDC1 = CreateCompatibleDC(hDC); if (hMemDC1 != NULL) { HBITMAP hOldBitmap1 = (HBITMAP)SelectObject(hMemDC1, hBitmapDib); BitBlt(hMemDC1, 0, 0, rect.right - rect.left, rect.bottom - rect.top, hMemDC, 0, 0, SRCCOPY); SelectObject(hMemDC1, hOldBitmap1); // 保存为BMP格式 HANDLE hFile = CreateFile(L"screen_shot.bmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile != INVALID_HANDLE_VALUE) { BITMAPFILEHEADER bmfh = {0}; bmfh.bfType = 0x4d42; bmfh.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + (rect.right - rect.left) * (rect.bottom - rect.top) * 3; bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); DWORD dwNumWritten = 0; WriteFile(hFile, &bmfh, sizeof(BITMAPFILEHEADER), &dwNumWritten, NULL); WriteFile(hFile, &bitmapinfo.bmiHeader, sizeof(BITMAPINFOHEADER), &dwNumWritten, NULL); WriteFile(hFile, pData, (rect.right - rect.left) * (rect.bottom - rect.top) * 3, &dwNumWritten, NULL); CloseHandle(hFile); } DeleteDC(hMemDC1); } DeleteObject(hBitmapDib); } // 释放资源 SelectObject(hMemDC, hOldBitmap); DeleteDC(hMemDC); ReleaseDC(hWnd, hDC); ``` 这段代码可以实现WinFormPictureBox控件区域的截图功能,并将截图保存为BMP格式的文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值