Здравствуйте, господа разработчики.
Пишу на С# с применением GisToolKitActiveFree 14.0.0.1
Я пытаюсь реализовать функционал на "горячих клавишах", а именно при зажатой клавиши CTRL по клику мыши выполнить выделение необходимых мне объектов на карте.
Далее при нажатой клавише ALT выполнить групповое перемещение выделенных объектов.
НО ПОСЛЕ ОТЖАТИЯ КЛАВИШЫ ALT ОБЪЕКТЫ СТОЯТ НА МЕСТЕ И ПОЯВЛЯЕТСЯ ПОЛОСА КОТОРУЮ НЕ УДАЛИТЬ.
КАК БЫТЬ?????
Вот мой код выделения объектов:
if ((ModifierKeys & Keys.Control) == Keys.Control) //Групповое выделение объектов на карте при нажатии CTRL
{
int countObj = 0;
TxColorRef aColor = new TxColorRef();
aColor.Red = 255;
var listName = MapView.MapName;
mfGroup.cMapSelect.SiteNumber = 0; // основная карта
MapView.ViewSelect.MapSites[1] = false;
MapView.ViewSelect.MapSites[2] = false;
MapView.ViewSelect.MapSites[3] = false;
MapView.ViewSelect.MapSites[4] = false;
mfGroup.cMapSelect.Layers[47] = false;
mfGroup.cMapSelect.MapSites[1] = false;
mfGroup.cMapSelect.MapSites[2] = false;
mfGroup.cMapSelect.MapSites[3] = false;
mfGroup.cMapSelect.MapSites[4] = false;
MouseXY.PlaceInp = TxPPLACE.PP_PICTURE;
MouseXY.SetPoint(e.x, e.y);
mfGroup.PlaceInp = TxPPLACE.PP_PICTURE;
mfGroup.Active = false;
mfGroup.FindPoint = true;
mfGroup.X = e.x;
mfGroup.Y = e.y;
mfGroup.Radius = 5;
mfGroup.Active = true;
if (MapView.ViewSelect.SelectSample(true, listName, mfGroup.cMapObj.Key) > 0)
{
MapView.SetObjSelected(MapView.ViewSelect, aColor, true);
countObj++;
}
MapEditMetric.MapFindGroup = mfGroup.C_CONTAINER;
}
Вот код группового перемещения выделенных объектов:
if ((ModifierKeys & Keys.Alt) == Keys.Alt) // Перемещение объекта посредствам нажатой кнопки Alt
{
if (countObj > 0)
{
int type1 = MapAPI.mapLogReadActionForUndo((IntPtr)MapView.MapHandle, (IntPtr)0, 1); //выполняет запрос на получение номера последней транзакции
MapAPI.mapLogCreateAction((IntPtr)MapView.MapHandle, (IntPtr)0, type1++); // открывает журнал транзакций на запись
MapEditMetric.MoveWhenDown = false;
MapEditMetric.EditViewStyle = MapObj.Local == TxObjectLocal.OL_SQUARE ? TxEditViewStyle.vsContourWithNodes : TxEditViewStyle.vsRealView;
MapEditMetric.MetEditMode = axGisToolKit.TxEditMode.emMoveGroup;
MapEditMetric.StartAction();
}
private void MapEditMetric_OnExecute(object sender, EventArgs e)
{
MapObj.St yle = TxObjectStyle.OS_NORMAL;
MapObj.CommitObjectAsNew();
MapObj.Repaint();
MapView.Refresh();
}
Пишу на С# с применением GisToolKitActiveFree 14.0.0.1
Я пытаюсь реализовать функционал на "горячих клавишах", а именно при зажатой клавиши CTRL по клику мыши выполнить выделение необходимых мне объектов на карте.
Далее при нажатой клавише ALT выполнить групповое перемещение выделенных объектов.
НО ПОСЛЕ ОТЖАТИЯ КЛАВИШЫ ALT ОБЪЕКТЫ СТОЯТ НА МЕСТЕ И ПОЯВЛЯЕТСЯ ПОЛОСА КОТОРУЮ НЕ УДАЛИТЬ.
КАК БЫТЬ?????
Вот мой код выделения объектов:
if ((ModifierKeys & Keys.Control) == Keys.Control) //Групповое выделение объектов на карте при нажатии CTRL
{
int countObj = 0;
TxColorRef aColor = new TxColorRef();
aColor.Red = 255;
var listName = MapView.MapName;
mfGroup.cMapSelect.SiteNumber = 0; // основная карта
MapView.ViewSelect.MapSites[1] = false;
MapView.ViewSelect.MapSites[2] = false;
MapView.ViewSelect.MapSites[3] = false;
MapView.ViewSelect.MapSites[4] = false;
mfGroup.cMapSelect.Layers[47] = false;
mfGroup.cMapSelect.MapSites[1] = false;
mfGroup.cMapSelect.MapSites[2] = false;
mfGroup.cMapSelect.MapSites[3] = false;
mfGroup.cMapSelect.MapSites[4] = false;
MouseXY.PlaceInp = TxPPLACE.PP_PICTURE;
MouseXY.SetPoint(e.x, e.y);
mfGroup.PlaceInp = TxPPLACE.PP_PICTURE;
mfGroup.Active = false;
mfGroup.FindPoint = true;
mfGroup.X = e.x;
mfGroup.Y = e.y;
mfGroup.Radius = 5;
mfGroup.Active = true;
if (MapView.ViewSelect.SelectSample(true, listName, mfGroup.cMapObj.Key) > 0)
{
MapView.SetObjSelected(MapView.ViewSelect, aColor, true);
countObj++;
}
MapEditMetric.MapFindGroup = mfGroup.C_CONTAINER;
}
Вот код группового перемещения выделенных объектов:
if ((ModifierKeys & Keys.Alt) == Keys.Alt) // Перемещение объекта посредствам нажатой кнопки Alt
{
if (countObj > 0)
{
int type1 = MapAPI.mapLogReadActionForUndo((IntPtr)MapView.MapHandle, (IntPtr)0, 1); //выполняет запрос на получение номера последней транзакции
MapAPI.mapLogCreateAction((IntPtr)MapView.MapHandle, (IntPtr)0, type1++); // открывает журнал транзакций на запись
MapEditMetric.MoveWhenDown = false;
MapEditMetric.EditViewStyle = MapObj.Local == TxObjectLocal.OL_SQUARE ? TxEditViewStyle.vsContourWithNodes : TxEditViewStyle.vsRealView;
MapEditMetric.MetEditMode = axGisToolKit.TxEditMode.emMoveGroup;
MapEditMetric.StartAction();
}
private void MapEditMetric_OnExecute(object sender, EventArgs e)
{
MapObj.St yle = TxObjectStyle.OS_NORMAL;
MapObj.CommitObjectAsNew();
MapObj.Repaint();
MapView.Refresh();
}