đọc điểm ảnh

Nơi trao đổi về các vấn đề trong lập trình Windows Forms, Console dùng cú pháp ngôn ngữ Visual Basic .NET và C#

Moderators: tungblt, vuathongtin

Post Reply
hoanghuyle
Thành viên chính thức
Thành viên chính thức
Posts: 49
Joined: Wed 08/12/2010 10:31 pm
Has thanked: 3 times
Been thanked: 1 time

đọc điểm ảnh

Post by hoanghuyle »

mọi người giúp em cái này với em muốn đọc cái ảnh này kích thước 75x75 làm cho nó xoay tròn, em lập trình vb.net
anh
anh
boltb521 75x75.png (121.21 KiB) Viewed 1129 times
User avatar
gtdcomputer
Thành viên danh dự
Thành viên danh dự
Posts: 1296
Joined: Fri 18/07/2008 12:08 pm
Location: Kiên Giang
Has thanked: 8 times
Been thanked: 116 times
Contact:

Re: đọc điểm ảnh

Post by gtdcomputer »

Mình có 2 cách cho bạn chọn ;v

1. Cách đánh lừa người dùng: :))
Tạo một cái Panel (nằm trong bộ Container) với độ lớn 75, 75. Tạo cái picturebox bỏ vào cái panel đó. Load ảnh vào, và để chế độ ảnh là autosize.
Sao đó, ta cứ dùng Timer tíck rồi move cái picturebox đó, phần nằm ngoài panel sẽ bị ẩn đi, người dùng sẽ thấy giống như là ảnh đang chuyển động vậy

2. Cách vẽ lại ảnh vào picturebox khác
VB.NET cung cấp cho người dùng khá nhiều công cụ hữu ích, công cụng Drawing là cái mình hơi bị thích.
Cách này, mình dùng thư viện Drawing để vẽ một vùng ảnh 75,75 vào picturebox mới. Như vậy, bạn sẽ thấy như ảnh động :>

Code tham khảo:
  1. Dim tx As Integer, ty As Integer
  2.     Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  3.         'Move picturebox trong panel
  4.         Dim i As Integer = PictureBox1.Left - 75
  5.         Dim j As Integer = PictureBox1.Top
  6.         If i <= -PictureBox1.Width Then
  7.             i = 0
  8.             j = j - 75
  9.             If j <= -PictureBox1.Height Then j = 0
  10.         End If
  11.         PictureBox1.Left = i
  12.         PictureBox1.Top = j
  13.  
  14.         'Drawing lai picture vao picturebox2
  15.         tx = tx + 75
  16.         If tx >= PictureBox1.Image.Width Then
  17.             tx = 0
  18.             ty = ty + 75
  19.             If ty >= PictureBox1.Image.Height Then ty = 0
  20.         End If
  21.         PictureBox2.Image = DrawImage(tx, ty)
  22.     End Sub
  23.  
  24.     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  25.         tx = 0  ty = 0
  26.  
  27.     End Sub
  28.  
  29.     Public Function DrawImage(ByVal tx As Integer, ByVal ty As Integer) As Bitmap
  30.         'Tạo bitmap mới, có độ lớn như điểm ảnh bạn muốn
  31.         Dim k As New Bitmap(75, 75)
  32.         'Tạo đối tượng đồ họa cho bitmap
  33.         Dim g As Drawing.Graphics = Drawing.Graphics.FromImage(k)
  34.         'Tạo khối cần lấy từ ảnh gốc
  35.         Dim sr As New Rectangle(tx, ty, 75, 75)
  36.         'Tạo khối cần đưa vào ảnh đích
  37.         Dim ds As New Rectangle(0, 0, 75, 75)
  38.         'Vẽ ảnh gốc vào ảnh đích, theo khối đã tạo
  39.         g.DrawImage(PictureBox1.Image, ds, sr, GraphicsUnit.Pixel)
  40.         'Giải phóng đối tượng đồ họa
  41.         g.Dispose()
  42.         'Cái này ko biết
  43.         Return k
  44.     End Function
Con người không quan tâm đến sự thật. Họ tin cái họ muốn, và về sau, cái đó sẽ trở thành sự thật
ngaydautiendihoc
Thành viên danh dự
Thành viên danh dự
Posts: 262
Joined: Mon 12/03/2007 10:55 pm
Location: Hà Giang
Has thanked: 2 times
Been thanked: 1 time
Contact:

Re: đọc điểm ảnh

Post by ngaydautiendihoc »

Hoặc cắt cái ảnh gốc ra thành các ảnh nhỏ rồi lưu vào thư mục hoặc listimage sau đó load lần lượt.
hoanghuyle
Thành viên chính thức
Thành viên chính thức
Posts: 49
Joined: Wed 08/12/2010 10:31 pm
Has thanked: 3 times
Been thanked: 1 time

Re: đọc điểm ảnh

Post by hoanghuyle »

ngaydautiendihoc wrote:Hoặc cắt cái ảnh gốc ra thành các ảnh nhỏ rồi lưu vào thư mục hoặc listimage sau đó load lần lượt.
anh cho em xin cai code nhe, thansk anh
User avatar
gtdcomputer
Thành viên danh dự
Thành viên danh dự
Posts: 1296
Joined: Fri 18/07/2008 12:08 pm
Location: Kiên Giang
Has thanked: 8 times
Been thanked: 116 times
Contact:

Re: đọc điểm ảnh

Post by gtdcomputer »

Cách của mình là đơn giản rồy, thực ra việc cắt ảnh ra để lưu thành nhiều file, rồi load vào sẽ đơn giản code hơn. Nhưng lại hơi phức tạp. Vì việc cắt thủ công có thể không đồng đều, làm ảnh ko đẹp. Hình như photoshop có chức năng tự chia ảnh ra thì phải, mình ko rành photoshop lắm
Con người không quan tâm đến sự thật. Họ tin cái họ muốn, và về sau, cái đó sẽ trở thành sự thật
ngaydautiendihoc
Thành viên danh dự
Thành viên danh dự
Posts: 262
Joined: Mon 12/03/2007 10:55 pm
Location: Hà Giang
Has thanked: 2 times
Been thanked: 1 time
Contact:

Re: đọc điểm ảnh

Post by ngaydautiendihoc »

hoanghuyle wrote: anh cho em xin cai code nhe, thansk anh
Ui, lâu rồi mình không code, chỉ nhớ là có cách đó thôi. Nhưng làm theo cách của @gtdcomputer cho đơn giản. Lưu ý các ảnh thành phần phải được sắp xếp với khoảng cách cố định, khi dịch chuyển sẽ không bị biến dạng.
Post Reply

Return to “Visual Basic .NET và C# (VB.NET & C#)”