7

この言語(C#)をよく知らないため、どのように進めればよいかわからないソリューションを実装する必要があります。

説明させてください:目標は、ユーザーがアイテム(円形のフォーム)からゾーンを選択できるようにすることです。そのため、ゾーンに数字の付いた画像を配置し(最終的には時計のように見えます)、ユーザーがクリックする数字からゾーンを取得するというアイデアがありました。

だから私の質問は:画像にクリック可能なゾーンを作成することは可能ですか?(または、この機能に対する別の解決策がある場合、私はオープンマインドです)

前もって感謝します !

編集>>これは、Webサイトではなく、WinFormアプリケーション用です。

4

4 に答える 4

2

このようなものを実装してみませんか?

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;

public class Zone
{
    public Region Region { get; private set; }
    public Action<MouseEventArgs> Click { get; private set; }

    public Zone(Region zoneRegion, Action<MouseEventArgs> click)
    {
        this.Region = zoneRegion;
        this.Click = click;
    }
}

public class PictureBoxWithClickableZones : PictureBox
{
    private readonly List<Zone> zones = new List<Zone>();

    public void AddZone(Zone zone)
    {
        if (zone == null)
            throw new ArgumentNullException("zone");

        this.zones.Add(zone);
    }

    protected override void OnMouseClick(MouseEventArgs e)
    {
        base.OnMouseClick(e);

        foreach (var zone in this.zones.Where(zone => zone.Region.IsVisible(e.Location)))
            zone.Click(e);
    }
}

十分な時間があれば、適切なコンポーネントを作成して、VisualStudioのWinFormsDesignerでも使用できます。

于 2012-04-18T18:08:04.910 に答える
2

みなさん、ありがとうございました。面白いことがあります。

残念ながら、これを非常に高速に開発する必要があったため、onclickイベントをキャッチし、ユーザーがCursor.Positionを使用してクリックしたゾーンをキャッチする画像を作成しました。

int X = pictureBox.PointToClient(Cursor.Position).X;
int Y = pictureBox.PointToClient(Cursor.Position).Y;

たぶんそれを行うための「よりクリーンな」方法ではありませんが、それは機能します!とにかくありがとう !

于 2012-04-30T13:02:46.010 に答える
1

もうそれほど人気はありませんが、タグを使用<map>してこれを行うことができます。

<img src="planets.gif" width="145" height="126" alt="Planets" usemap="#planetmap" />

<map name="planetmap">
  <area shape="rect" coords="0,0,82,126" href="sun.htm" alt="Sun" />
  <area shape="circle" coords="90,58,3" href="mercur.htm" alt="Mercury" />
  <area shape="circle" coords="124,58,8" href="venus.htm" alt="Venus" />
</map> 

編集:

これにはWinFormsソリューションが必要なので、おそらくこの記事が役に立ちます。

C#WindowsフォームImageMapコントロール

于 2012-04-17T15:20:07.760 に答える
0

HTMLイメージマップを調べます。

使い方を学ぶのに約5分かかります。

タグでは、マップの領域とリンクを定義するよりも、属性を適用してマップすることができます

これがグーグルの簡単な応答 ですhttp://www.javascriptkit.com/howto/imagemap.shtml

于 2012-04-17T15:19:05.183 に答える