Follow us on...
Follow us on Twitter Follow us on Facebook Watch us on YouTube

Giúp các bé đáng thương ấy với

Gameshow “Ai Là Triệu Phú” trên VTV đang chờ đón bạn – Tải ngay!

Tuyển uploader dự án Safeshared có thu nhập

Ngập tràn ưu đãi cho tín đồ công nghệ tại sony show 2014

Chiêm ngưỡng BaoMoi đẹp "tuyệt diệu" trên Windows Phone

Tuyển Mod box Mobile
kết quả từ 1 tới 13 trên 13
  1. #1
    st.kendy's Avatar
    st.kendy vẫn chưa có mặt trong diễn đàn Búa Gỗ Đôi
    Tham gia
    May 2011
    Bài
    35
    Cảm ơn
    18
    Điểm
    3/3 bài viết

    Default Giúp đỡ về load hình ảnh lên picturebox

    Minh2 có làm 1 project về quản lý cửa hàng,trong đó có sử dụng 1 picturebox để load hình ảnh của sản phẩm.
    Mỗi khi click vào 1 sản phẩm trong datagridview thì nó sẽ hiện lên hình ảnh ở picturebox
    không hiểu sao mình làm hoài mà không dc.mấy bạn xem giúp mình với

    Câu lệnh mình sử dụng thế này thì không được
    Code:
    string path = dtgMatHang.Rows[dong].Cells["HinhAnh"].Value.ToString();
                this.ptrHinhAnhSP.Image = new Bitmap(@"{1}",path);
    Còn mình load trực tiếp thế này lại được'
    Code:
                this.ptrHinhAnhSP.Image = new Bitmap(@"D:\WALLPAPER\2\apple_iphone_6-wallpaper-2560x1440.jpg");

  2. Có 1 thành viên cảm ơn st.kendy cho bài viết này:
    namuno93 (13-03-2013)

  3. #2
    nguoila's Avatar
    nguoila vẫn chưa có mặt trong diễn đàn Rìu Chiến
    Tham gia
    Oct 2007
    Bài
    1.774
    Cảm ơn
    216
    Điểm
    2.973/700 bài viết

    Default

    Bạn thử messenger ra xem cái Path bạn lấy ra đã đúng chưa?
    Đúng rồi thì dùng thế này là được: this.ptrHinhAnhSP.Image = new Bitmap(path);
    Vô tình ta lại đi tìm
    Đi tìm lại thấy vô tình nhiều hơn

  4. Có 1 thành viên cảm ơn nguoila cho bài viết này:
    st.kendy (13-03-2013)

  5. #3
    st.kendy's Avatar
    st.kendy vẫn chưa có mặt trong diễn đàn Búa Gỗ Đôi
    Tham gia
    May 2011
    Bài
    35
    Cảm ơn
    18
    Điểm
    3/3 bài viết

    Default

    Trích nguoila View Post
    Bạn thử messenger ra xem cái Path bạn lấy ra đã đúng chưa?
    Đúng rồi thì dùng thế này là được: this.ptrHinhAnhSP.Image = new Bitmap(path);
    nó lấy ra đường dẫn thế này nè bạn: ví dụ click vào 1 dòng thì đường dẫn hiển thị
    D:\WALLPAPER\2\apple_iphone_6-wallpaper-2560x1440.jpg
    xong nó báo : Additional information: The path is not of a legal form.

  6. #4
    st.kendy's Avatar
    st.kendy vẫn chưa có mặt trong diễn đàn Búa Gỗ Đôi
    Tham gia
    May 2011
    Bài
    35
    Cảm ơn
    18
    Điểm
    3/3 bài viết

    Default

    up cho mấy bác vào giúp

  7. #5
    balick's Avatar
    balick vẫn chưa có mặt trong diễn đàn Búa Gỗ
    Tham gia
    Nov 2009
    Bài
    20
    Cảm ơn
    1
    Điểm
    9/6 bài viết

    Post

    Vấn đề của bạn sử lý như sau :
    // tạo file chứa đường dẫn
    string _filepath = Application.StartupPath; // trả về đường dẫn cài phần mềm // trong thư mục Bin
    // nếu kô biết chạy debug để xem

    string image = dtgMatHang.Rows[dong].Cells["HinhAnh"].Value.ToString();
    // giả sử trả về tên ảnh + đuôi ảnh . vd: maytinh.jpg

    string path = _filepath + image; // lấy được đường dẫn đến hình ảnh

    if(picBox.Image != null) // kiểm tra xem picBox đó đã có hình chưa
    {
    picBox.Image.Dispose(); // nếu có rồi thì Dispose nó để khỏi đụng nhau
    }
    picBox.Image = null;
    bool checkexists = File.Exists(path);// kiểm tra xem có tồn tại hình trong thư mục đó kô
    if (checkexists) // kiem tra hinh ton tai moi mo duoc
    {
    picBox.Image = Image.FromFile(path);
    picBox.SizeMode = PictureBoxSizeMode.CenterImage;
    picBox.BorderStyle = BorderStyle.Fixed3D;
    picBox.SizeMode = PictureBoxSizeMode.StretchImage;
    picBox.Width = 145; // xét chiều rộng
    picBox.Height = 150; // xét chiều dài

    } // sử lý ảnh xong rồi nhé
    Đương nhiên nếu muốn Click từng Record trong DataGridView để picBox thay đổi theo từng hình thì bạn sẽ phải sử lý trong sự kiện CellClick của DataGridView.
    P/s: Thấy hay thì thanks nhé ! tạo động lực cho mình trả lời những bài tiếp theo
    Thay đổi nội dung bởi balick; 13-03-2013 lúc 15:58.

  8. Có 3 thành viên cảm ơn balick cho bài viết này:
    longcb_n72 (03-06-2013), st.kendy (13-03-2013), tranvuong1803 (04-06-2013)

  9. #6
    nguoila's Avatar
    nguoila vẫn chưa có mặt trong diễn đàn Rìu Chiến
    Tham gia
    Oct 2007
    Bài
    1.774
    Cảm ơn
    216
    Điểm
    2.973/700 bài viết

    Default

    Trích st.kendy View Post
    nó lấy ra đường dẫn thế này nè bạn: ví dụ click vào 1 dòng thì đường dẫn hiển thị

    xong nó báo : Additional information: The path is not of a legal form.
    Có vẽ như đường dẫn bạn lấy được đã bao gồm khoảng trắng, bạn phải loại bỏ khoảng trắng trong chuổi đường dẫn.
    Dùng patch.trim() thử xem
    Code sau sẽ kiểm tra nếu có khoảng trắng nó sẽ không hiện thì lên ptrHinhAnhSP
    if (!string.IsNullOrWhitespace(path))
    {
    this.ptrHinhAnhSP.Image = Image.FromFile(path);
    }
    Thay đổi nội dung bởi nguoila; 13-03-2013 lúc 16:54.
    Vô tình ta lại đi tìm
    Đi tìm lại thấy vô tình nhiều hơn

  10. Có 1 thành viên cảm ơn nguoila cho bài viết này:
    st.kendy (13-03-2013)

  11. #7
    st.kendy's Avatar
    st.kendy vẫn chưa có mặt trong diễn đàn Búa Gỗ Đôi
    Tham gia
    May 2011
    Bài
    35
    Cảm ơn
    18
    Điểm
    3/3 bài viết

    Default

    Trích balick View Post
    Vấn đề của bạn sử lý như sau :
    // tạo file chứa đường dẫn
    string _filepath = Application.StartupPath; // trả về đường dẫn cài phần mềm // trong thư mục Bin
    // nếu kô biết chạy debug để xem

    string image = dtgMatHang.Rows[dong].Cells["HinhAnh"].Value.ToString();
    // giả sử trả về tên ảnh + đuôi ảnh . vd: maytinh.jpg

    string path = _filepath + image; // lấy được đường dẫn đến hình ảnh

    if(picBox.Image != null) // kiểm tra xem picBox đó đã có hình chưa
    {
    picBox.Image.Dispose(); // nếu có rồi thì Dispose nó để khỏi đụng nhau
    }
    picBox.Image = null;
    bool checkexists = File.Exists(path);// kiểm tra xem có tồn tại hình trong thư mục đó kô
    if (checkexists) // kiem tra hinh ton tai moi mo duoc
    {
    picBox.Image = Image.FromFile(path);
    picBox.SizeMode = PictureBoxSizeMode.CenterImage;
    picBox.BorderStyle = BorderStyle.Fixed3D;
    picBox.SizeMode = PictureBoxSizeMode.StretchImage;
    picBox.Width = 145; // xét chiều rộng
    picBox.Height = 150; // xét chiều dài

    } // sử lý ảnh xong rồi nhé
    Đương nhiên nếu muốn Click từng Record trong DataGridView để picBox thay đổi theo từng hình thì bạn sẽ phải sử lý trong sự kiện CellClick của DataGridView.
    P/s: Thấy hay thì thanks nhé ! tạo động lực cho mình trả lời những bài tiếp theo
    Cảm ơn mấy bác rất nhìu,em làm như vậy fix được rùi,mấy bác cho em hỏi thêm 1 vấn đề nữa được không? giờ e mún khi mở một hình ảnh nào đó,thì ảnh đó sẽ tự động lưu vào một thư mục trong project ở đây em đặt là HinhAnh.tìm từ qua h mà chưa thấy cách nào tối ưu.hix.đây là code cho nút mở hình ảnh của em

    openFileDialog1.ShowDialog();
    string file = openFileDialog1.FileName;
    string duongdan = openFileDialog1.FileName.ToString();
    if (string.IsNullOrEmpty(file))
    return;
    Image myimage = Image.FromFile(file);
    ptrHinhAnh.Image = myimage;
    txtDuongDanFlie.Text = duongdan;

  12. #8
    nguoila's Avatar
    nguoila vẫn chưa có mặt trong diễn đàn Rìu Chiến
    Tham gia
    Oct 2007
    Bài
    1.774
    Cảm ơn
    216
    Điểm
    2.973/700 bài viết

    Default

    Trích st.kendy View Post
    Cảm ơn mấy bác rất nhìu,em làm như vậy fix được rùi,mấy bác cho em hỏi thêm 1 vấn đề nữa được không? giờ e mún khi mở một hình ảnh nào đó,thì ảnh đó sẽ tự động lưu vào một thư mục trong project ở đây em đặt là HinhAnh.tìm từ qua h mà chưa thấy cách nào tối ưu.hix.đây là code cho nút mở hình ảnh của em
    Ơ cái này chắc dùng File.Copy là được mà, bạn có đường dẫn file và đường dẫn cần lưu file rồi mà
    Vô tình ta lại đi tìm
    Đi tìm lại thấy vô tình nhiều hơn

  13. #9
    st.kendy's Avatar
    st.kendy vẫn chưa có mặt trong diễn đàn Búa Gỗ Đôi
    Tham gia
    May 2011
    Bài
    35
    Cảm ơn
    18
    Điểm
    3/3 bài viết

    Default

    Trích nguoila View Post
    Ơ cái này chắc dùng File.Copy là được mà, bạn có đường dẫn file và đường dẫn cần lưu file rồi mà
    Ý mình là đường dẫn tuyệt đối đó bạn ví dụ \\HinhAnh\\ex.jpg
    khi mình load hình lên thì nó tự động copy hình đó vào thư mục HinhAnh này

    Code upload hình của mình như sau:
    try
    {
    OpenFileDialog dlg = new OpenFileDialog();
    dlg.Filter = "file hinh|*.jpg|all file|*.*";
    dlg.InitialDirectory = @"D:\";
    dlg.Multiselect = true;
    string a = null;
    if (dlg.ShowDialog() == DialogResult.OK)
    {
    string[] tmp = dlg.FileNames;
    foreach (string i in tmp)
    {
    FileInfo fi = new FileInfo(i);
    string[] xxx = i.Split('\\');
    string des = Application.StartupPath + @"\HinhAnh\" + xxx[xxx.Length - 1];
    File.Delete(des);

    //over.
    fi.CopyTo(des);
    System.IO.Directory.GetCurrentDirectory() + @"\\HinhAnh\";
    }
    MessageBox.Show("thang cong ");
    }
    }
    catch (Exception ex) { MessageBox.Show(ex.Message); }
    bây giờ làm sao để lấy được đường dẫn chỉ có dạng như thế này: \\HinhAnh\\dfsf.jpeg
    Thay đổi nội dung bởi st.kendy; 13-03-2013 lúc 19:34.

  14. #10
    nguoila's Avatar
    nguoila vẫn chưa có mặt trong diễn đàn Rìu Chiến
    Tham gia
    Oct 2007
    Bài
    1.774
    Cảm ơn
    216
    Điểm
    2.973/700 bài viết

    Default

    Code của bạn theo mình hiểu là đầu tiên bạn xoá hình ảnh nếu nó có trong thư mục HinhAnh
    Sau đó copy hình lấy được vào thư mục này.
    Mình sửa code lại thế này
    try
    {
    //Nếu muốn xoá hết tất cả các file có trong thư mục HinhAnh thì dùng đoạn code này
    string FolderName = Application.StartupPath + @"\HinhAnh";
    DirectoryInfo dir = new DirectoryInfo(FolderName);
    foreach (FileInfo fi in dir.GetFiles())
    {
    fi.Delete();
    }
    //Kết thúc code xoá file
    OpenFileDialog dlg = new OpenFileDialog();
    dlg.Filter = "file hinh|*.jpg|all file|*.*";
    dlg.InitialDirectory = @"D:\";
    dlg.Multiselect = true;

    if (dlg.ShowDialog() == DialogResult.OK)
    {
    string[] tmp = dlg.FileNames;
    foreach (string i in tmp)
    {
    FileInfo fi = new FileInfo(i);
    string xxx = i.Substring(i.LastIndexOf("\\"));
    string des = Application.StartupPath + @"\HinhAnh\" + xxx;
    fi.CopyTo(des);//Nếu dùng code xoá ở trên
    // fi.CopyTo(des,true); //Nếu không dùng code xoá, nó sẽ ghi đè

    }
    MessageBox.Show("thang cong ");
    }
    }
    catch (Exception ex) { MessageBox.Show(ex.Message); }
    Vô tình ta lại đi tìm
    Đi tìm lại thấy vô tình nhiều hơn

  15. Có 1 thành viên cảm ơn nguoila cho bài viết này:
    st.kendy (13-03-2013)

  16. #11
    st.kendy's Avatar
    st.kendy vẫn chưa có mặt trong diễn đàn Búa Gỗ Đôi
    Tham gia
    May 2011
    Bài
    35
    Cảm ơn
    18
    Điểm
    3/3 bài viết

    Default

    Trích nguoila View Post
    Code của bạn theo mình hiểu là đầu tiên bạn xoá hình ảnh nếu nó có trong thư mục HinhAnh
    Sau đó copy hình lấy được vào thư mục này.
    Mình sửa code lại thế này
    Cảm ơn bạn vì đã nhiệt tình giúp đỡ mình....^^

  17. #12
    balick's Avatar
    balick vẫn chưa có mặt trong diễn đàn Búa Gỗ
    Tham gia
    Nov 2009
    Bài
    20
    Cảm ơn
    1
    Điểm
    9/6 bài viết

    Post

    // Vấn đề của bạn giải quyết như sau
    // cũng như theo cách trước bạn vẫn phải có 1 đường dẫn để lưu file:
    // đường dẫn này mình để linh động hơn bằng cách mình sẽ tạo thêm folder chứa từng danh mục ảnh riêng.
    string _filepath = Application.StartupPath + @"\Resource\Image\"; // Thêm Resource\Image vào nhé.
    // giờ muốn lưu hình ảnh xuống đường dẫn trên thì phải xem lại cái openfile Dialog của bạn .
    // Theo như ý của bạn là vửa mở ảnh lên là mình sẽ lưu ảnh đó xuống thư mục luôn
    string _imageformat = "1";
    openFileDialog1.FileName = "Image";
    openFileDialog1.Filter = "JPEGs|*.jpg|Bitmaps|*.bmp|GIFs|*.gif|Png|*.pn g";
    openFileDialog1.FilterIndex = 1;
    _filepath = Application.StartupPath + @"\Resource\Image\";

    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
    switch (openFileDialog1.FilterIndex)
    {
    case 1: // nếu là jpg
    _filename = txtMaNhanVien.Text + ".jpg";
    _imageformat ="1";
    break;

    case 2:
    _filename = txtMaNhanVien.Text + ".bmp";
    _imageformat = "2";
    break;

    case 3:
    _filename =txtMaNhanVien.Text + ".gif";
    _imageformat = "3";
    break;
    case 4:
    _filename = txtMaNhanVien.Text + ".png";
    _imageformat = "4";
    break;
    }
    // lúc này mình đã biết được file đuôi gì rồi nhé
    //giờ chỉ việc gán hình ảnh vừa mở lên picBox thôi nhé. (xem lại code ở trên)
    //tiếp theo mình sẽ lưu xuống thư mục như sau
    bool checkexists = File.Exists(_filepath+_filename); // kiểm tra xem tồn tại chưa nhé
    if (checkexists)
    {
    File.Delete(_filepath+_filename); // xóa file thôi // thường nếu kô xóa nó sẽ đè lên
    }
    switch (_imageformat)
    {
    case "1":
    picBox.Image.Save(_filepath+_filename, ImageFormat.Jpeg); // lưu xuống đường dẫn ở trên đấy
    break;
    case "2":
    picBox.Image.Save(_filepath + _filename, ImageFormat.Bmp);
    break;
    case "3":
    picBox.Image.Save(_filepath + _filename, ImageFormat.Gif);
    break;
    case "4":
    picBox.Image.Save(_filepath + _filename, ImageFormat.Png);
    break;
    }
    // Xong rồi đấy, chúc bạn may mắn

    // Thường thì ít ai mà vừa bật file hình ảnh lên là lưu lắm ,thường thì khi mình submit rùi mình lưu thì hay hơn. Nếu vậy bạn chỉ cần tach code ra 1 cách hợp lý là xong thôi . Ý tưởng ở trên đã có rồi thì mình theo sát là được.
    // Mà theo mình biết thì có cách tối ưu hơn, mình sẽ cập nhật sau . Chúc bạn may mắn nhé!

  18. Có 2 thành viên cảm ơn balick cho bài viết này:
    pebu5201314 (28-05-2013), st.kendy (14-03-2013)

  19. #13
    st.kendy's Avatar
    st.kendy vẫn chưa có mặt trong diễn đàn Búa Gỗ Đôi
    Tham gia
    May 2011
    Bài
    35
    Cảm ơn
    18
    Điểm
    3/3 bài viết

    Default

    Trích balick View Post
    // Vấn đề của bạn giải quyết như sau
    // cũng như theo cách trước bạn vẫn phải có 1 đường dẫn để lưu file:
    // đường dẫn này mình để linh động hơn bằng cách mình sẽ tạo thêm folder chứa từng danh mục ảnh riêng.
    string _filepath = Application.StartupPath + @"\Resource\Image\"; // Thêm Resource\Image vào nhé.
    // giờ muốn lưu hình ảnh xuống đường dẫn trên thì phải xem lại cái openfile Dialog của bạn .
    // Theo như ý của bạn là vửa mở ảnh lên là mình sẽ lưu ảnh đó xuống thư mục luôn
    string _imageformat = "1";
    openFileDialog1.FileName = "Image";
    openFileDialog1.Filter = "JPEGs|*.jpg|Bitmaps|*.bmp|GIFs|*.gif|Png|*.pn g";
    openFileDialog1.FilterIndex = 1;
    _filepath = Application.StartupPath + @"\Resource\Image\";

    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
    switch (openFileDialog1.FilterIndex)
    {
    case 1: // nếu là jpg
    _filename = txtMaNhanVien.Text + ".jpg";
    _imageformat ="1";
    break;

    case 2:
    _filename = txtMaNhanVien.Text + ".bmp";
    _imageformat = "2";
    break;

    case 3:
    _filename =txtMaNhanVien.Text + ".gif";
    _imageformat = "3";
    break;
    case 4:
    _filename = txtMaNhanVien.Text + ".png";
    _imageformat = "4";
    break;
    }
    // lúc này mình đã biết được file đuôi gì rồi nhé
    //giờ chỉ việc gán hình ảnh vừa mở lên picBox thôi nhé. (xem lại code ở trên)
    //tiếp theo mình sẽ lưu xuống thư mục như sau
    bool checkexists = File.Exists(_filepath+_filename); // kiểm tra xem tồn tại chưa nhé
    if (checkexists)
    {
    File.Delete(_filepath+_filename); // xóa file thôi // thường nếu kô xóa nó sẽ đè lên
    }
    switch (_imageformat)
    {
    case "1":
    picBox.Image.Save(_filepath+_filename, ImageFormat.Jpeg); // lưu xuống đường dẫn ở trên đấy
    break;
    case "2":
    picBox.Image.Save(_filepath + _filename, ImageFormat.Bmp);
    break;
    case "3":
    picBox.Image.Save(_filepath + _filename, ImageFormat.Gif);
    break;
    case "4":
    picBox.Image.Save(_filepath + _filename, ImageFormat.Png);
    break;
    }
    // Xong rồi đấy, chúc bạn may mắn

    // Thường thì ít ai mà vừa bật file hình ảnh lên là lưu lắm ,thường thì khi mình submit rùi mình lưu thì hay hơn. Nếu vậy bạn chỉ cần tach code ra 1 cách hợp lý là xong thôi . Ý tưởng ở trên đã có rồi thì mình theo sát là được.
    // Mà theo mình biết thì có cách tối ưu hơn, mình sẽ cập nhật sau . Chúc bạn may mắn nhé!
    Cảm ơn bạn nhìu nhé ^^

 

 

Quyền sử dụng

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể tự sửa bài viết của mình
  •