2011-07-23 90 views
6

Vì vậy, con trỏ mặc định là con trỏ "Mũi tên" và trên cùng bên trái của mũi tên (trong đó điểm là) là phần nhấp chuột hoặc tương tác với các điều khiển khác. Làm thế nào tôi có thể thay đổi phần trỏ để nói đuôi của mũi tên?C# Thay đổi vị trí nhấn/trỏ của con trỏ?

Điều tôi có là con trỏ tùy chỉnh (hình ảnh bitmap) là hình tròn có kích thước 16x16 và tôi muốn chính trung tâm của nó là con trỏ. Tôi có một con trỏ kiểu mũi tên tùy chỉnh khác trỏ xuống dưới cùng bên trái cũng 16x16 và tôi muốn góc dưới cùng bên trái của con trỏ là con trỏ. Tôi nghĩ rằng có một tài sản trong lớp con trỏ cho điều này nhưng tôi không chắc chắn nó được gọi là gì.

Trả lời

6

Điều này thực sự được chỉ định trong CURfile format.

Định dạng tệp CUR là định dạng tệp hình ảnh gần như giống hệt nhau cho con trỏ không hoạt hình trong Microsoft Windows. Sự khác biệt duy nhất giữa hai định dạng tệp này là các byte được sử dụng để nhận dạng chúng và việc thêm điểm phát sóng vào tiêu đề định dạng CUR; điểm nóng là được xác định là độ lệch pixel (theo toạ độ x, y) từ góc trên cùng bên trái của hình ảnh con trỏ nơi người dùng thực sự trỏ chuột .

Các chương trình có thể chỉnh sửa CUR tệp thường cho phép bạn chỉ định điểm nóng. Bạn có thể tìm thêm thông tin trong this question.

+0

Tôi đoán tôi nên đã chỉ định rằng những gì tôi có là bitmap (png) và không phải là tệp con trỏ. Có cách nào để làm điều này với một bitmap? – Jack

+0

@Jack - Có thể [câu hỏi] này (http://stackoverflow.com/questions/550918/change-cursor-hotspot-in-winforms-net) gần hơn với những gì bạn cần? – CodeNaked

+0

Có, nó hoạt động. Cảm ơn. – Jack

1

Điều bạn muốn không thể thực hiện được thông qua mã. Tôi muốn làm điều tương tự nhưng không thể. Trên thực tế, Cursor class có thuộc tính được gọi là HotSpot, đó là điểm mà bạn muốn thay đổi. Tuy nhiên thuộc tính này là chỉ đọc. Cách duy nhất để thay đổi điều này là khi tải tệp (trên tệp .cur, tôi khuyên bạn nên sử dụng Paint .net với trình cắm chuột và biểu tượng plugin (tìm kiếm trên web) để chỉnh sửa con trỏ). Một điều quan trọng: con trỏ phải là một tệp và không phải là tài nguyên hoặc những thứ tương tự (phải là tệp trên hệ thống tệp) để tải tệp đó. Hãy nhớ điều đó, tôi đã thử nghiệm thời gian xấu theo những cách khác.

Ý tưởng mà tôi lưu ý là: chỉnh sửa tệp con trỏ ngay khi bạn cần thay đổi điểm phát sóng, tuy nhiên điều này yêu cầu bạn viết một api cho phép bạn thay đổi điểm phát sóng trên tệp con trỏ. Tôi không biết làm thế nào tập tin này được xây dựng, do đó bạn phải tiếp tục từ đây.

Hy vọng điều này hữu ích

+1

Câu hỏi này không phải là [câu hỏi] (http://stackoverflow.com/questions/550918/change-cursor-hotspot-in-winforms-net) hay hướng dẫn của Rick tạo một Con trỏ từ một Bitmap trong thời gian chạy (tức là thông qua mã)? – CodeNaked

+0

Vâng, bạn có thể tạo bitmap thông qua mã, điều tôi không biết là bạn có thể tạo một loại xử lý cho con trỏ đó mà không cần tệp đó (tôi nghĩ bạn phải lưu nó trên hệ thống tệp ngay cả khi bạn tạo nó thời gian chạy), tôi đọc nó trên một số câu hỏi khác, xin lỗi vì điều đó.Tuy nhiên bạn ** có ** để xây dựng lại toàn bộ con trỏ để thay đổi điểm nóng của nó, đó là điều quan trọng mà tôi muốn cho anh ta thấy –

Các vấn đề liên quan